anchor.diff:  {$IFDEF VER210}
         v := f.GetValue(IValueData(TValueData(Value).FHeapData).GetReferenceToRawData);
   {$ELSE}
  -
  -      ft := f.FieldType;
  -      if ft.Handle^.Kind = tkString then
  -      begin
  -        PTd := GetTypeData(ft.Handle);
  -        LBuffer := PByte(TValueData(Value).FValueData.GetReferenceToRawData) + f.Offset;
  -
  -
  -        TValueEx(v).FData.FTypeInfo := ft.Handle;
  -        TValueEx(v).FData.FValueData := IValueData(Nop_Instance);
  -        inlineSize := -(PTd^.MaxLength + 2);
  -
  -        TValueEx(v).FData.FValueData := TValueDataImpl.Create(LBuffer, -inlineSize, ft.Handle);
  -
  -      end
  -      else
  -        TValue.Make(PByte(TValueData(Value).FValueData.GetReferenceToRawData) + f.Offset, ft.Handle, v);
  -
  +      v := f.GetValue(TValueData(Value).FValueData.GetReferenceToRawData);
   {$ENDIF}
         Result.AsObject[GetFieldName(f)] := ToJson(v, index);
       end;
  
positive.code:     Result := ToJson(v, so);
  end;
  
  type
    TRttiFieldEx = class(TRttiField)
    public
      procedure SetValue(Instance: Pointer; const AValue: TValue); override;
    end;
  
  procedure TRttiFieldEx.SetValue(Instance: Pointer; const AValue: TValue);
  var
    ft: TRttiType;
  begin
    ft := FieldType;
  //  if ft = nil then
  //    raise InsufficientRtti;
    AValue.Cast(ft.Handle).ExtractRawData(PByte(Instance) + Offset);
  end;
  
  function TSuperRttiContext.FromJson(TypeInfo: PTypeInfo; const obj: ISuperObject;
    var Value: TValue): Boolean;
  
  
negative.code:   public
      constructor Create; virtual;
      destructor Destroy; override;
      function Add(const Data: ISuperObject): Integer; overload;
      function Add(Data: SuperInt): Integer; overload;
      function Add(const Data: SOString): Integer; overload;
      function Add(Data: Boolean): Integer; overload;
      function Add(Data: Double): Integer; overload;
      function AddC(const Data: Currency): Integer;
      function Delete(index: Integer): ISuperObject;
      procedure Insert(index: Integer; const value: ISuperObject);
      procedure Clear(all: boolean = false);
  