public virtual IReference Next()
{
lock (DataLock)
{
IReference reference = null;
// always return the previous pushed reference first.
if (m_pushBack != null)
{
reference = m_pushBack;
m_pushBack = null;
return reference;
}
if (m_index < m_references.Count)
{
return m_references[m_index++];
}
return null;
}
}