/// <summary>
        ///
        /// </summary>
        /// <param name="field"></param>
        /// <param name="file"></param>
        public void ResolvePointerField(BlenderFileObjectField field, BlenderFile file)
        {
            // TODO: add support for array of pointers
            BlenderPointer ptr = (BlenderPointer)field.Value;

            if (ptr.State == BlenderPointerState.Resolved)
            {
                field.Value = ptr.Value;
                return;
            }
            if (ptr.State == BlenderPointerState.Resolving || ptr.State == BlenderPointerState.Failed)
            {
                field.Value = null;
                return;
            }

            // This is needed to avoid infinite loops
            ptr.State   = BlenderPointerState.Resolving;
            field.Value = ptr;

            dynamic resolvedValue = null;

            // TODO: resolve the pointer

            field.Value = resolvedValue;
        }
 public void AddField(string name, BlenderFileObjectField field)
 {
     m_Fields.Add(name, field);
     if (m_FirstField == null)
     {
         m_FirstField = field;
     }
 }