anchor.diff:    end;
   end;
   
  +procedure TSvAbstractSerializer<T>.SetClassProperties(var AValue: TValue; var ASkip: Boolean;
  +  AType: TRttiType; AObjectToEnumerate: T);
  +var
  +  i: Integer;
  +  LCurrProp: TRttiProperty;
  +  LEnumerator: TArray<TEnumEntry<T>>;
  +begin
  +  LEnumerator := EnumerateObject(AObjectToEnumerate);
  +  for i := 0 to Length(LEnumerator) - 1 do
  +  begin
  +    LCurrProp := AType.GetProperty(LEnumerator[i].Key);
  +    if Assigned(LCurrProp) then
  +    begin
  +      if IsTransient(LCurrProp) then
  +      begin
  +        Continue;
  +      end;
  +      LCurrProp.SetValue(GetRawPointer(AValue), SetValue(LEnumerator[i].Value, AValue, LCurrProp,
  +        LCurrProp.PropertyType, ASkip));
  +    end;
  +  end;
  +end;
  +
   procedure TSvAbstractSerializer<T>.SetRootObj(const Value: T);
   begin
     FRootObj := Value;
  
positive.code:       Skip := True;
        PostError('Unsupported value type: ' + GetTypeName( System.TypeInfo(T)));
      end;
    end;
  end;
  
  
negative.code:           if Assigned(LObject) then
            begin
              Result := LObject;
              SetClassProperties(Result, ASkip, AType, AJsonObject);
            end;
          end;
        end
  