private void GetFieldState(FieldInfo field, ObjectState objState)
 {
     if (field.FieldType.IsSubclassOf(_self))
     {
         var value = field.GetValue(this);
         objState.AddState(field.Name, (ObjectState)value.GetType().GetMethod("GetState").Invoke(value, null));
     }
     else objState.AddField(field.Name, field.GetValue(this));
 }
 private void GetPropertyState(PropertyInfo prop, ObjectState objState)
 {
     if (prop.PropertyType.IsSubclassOf(_self))
     {
         var value = prop.GetValue(this);
         objState.AddState(prop.Name, (ObjectState)value.GetType().GetMethod("GetState").Invoke(value, null));
     }
     else objState.AddProp(prop.Name, prop.GetValue(this));
 }