public virtual void AddIndexEntry(FieldMetadata fieldMetadata, object obj)
 {
     if (!_currentBuffer.HasParent())
     {
         object indexEntry = (obj == _currentMarshalledObject) ? _currentIndexEntry : obj;
         if (_isNew || !UpdateDepth().CanSkip(_reference))
         {
             fieldMetadata.AddIndexEntry(Transaction(), ObjectID(), indexEntry);
         }
         return;
     }
     _currentBuffer.RequestIndexEntry(fieldMetadata);
 }