anchor.diff:      Result := LValue.AsDouble;
   end;
   
  -procedure TJSONObjectHelper.FromRecord(ARecord: TValue);
  +procedure TJSONObjectHelper.FromRecord(const ARecord: TValue);
   var
     LType: TRttiType;
     LField: TRttiField;
  
positive.code:     property Values[const name: string]: Variant read GetValue; default;
  
      procedure FromRecord<T: record>(ARecord: T); overload;
      procedure FromRecord(ARecord: TValue); overload;
      function ToRecord<T: record>: T; overload;
      function ToRecord(const ARecordType: TRttiType): TValue; overload;
  
  
negative.code: end;
  
  function TJSONObjectHelper.ToRecord(const ARecordType: TRttiType): TValue;
  var
    LField: TRttiField;
  //  LProperty: TRttiProperty;
  begin
    TValue.Make(nil, ARecordType.Handle, Result);
  
    for LField in ARecordType.GetFields do
      LField.SetValue(Result.GetReferenceToRawData
        , ReadValue(LField.Name, TValue.Empty, LField.FieldType, False)
      );
  
  //    for LProperty in LType.GetProperties do
  //    LProperty.SetValue(Result.GetReferenceToRawData
  //      , ReadValue(LProperty.Name, TValue.Empty)
  //    );
  
  end;
  
  function TJSONObjectHelper.ToRecord<T>: T;
  