Does rolling window based on refrece or does it copy (create) actul "Type" to maintain history?

Example

   public override void Initialize()        {

....            historyBar = new RollingWindow<TradeBar>(2);

        }

        public void OnData(TradeBars data)        {            TradeBar b = null;            data.TryGetValue("SPY", out b);             if (b != null)   historyBar.Add(b);

...

        }

In above code when OnData for function reaches to the end memory for b gets released.  What happens to history that was added using "b" i.e will it surive?  If historyBar.Add(b) copies data from "b" to history list then it should be fine but if it points to "b" then there is risk of getting wrong history.