anchor.diff:    end;
   end;
   
  -function TJSONObjectHelper.GetValue(const name: string): Variant;
  -var
  -  LPair: TJSONPair;
  -  LValue: TJSONValue;
  -begin
  -{$ifdef DelphiXE6_UP}
  -  LPair := GetPairByName(name);
  -{$else}
  -  LPair := Get(name);
  -{$endif}
  -  if not Assigned(LPair) then
  -    Exit(Unassigned);
  -  LValue := LPair.JsonValue;
  -  if LValue is TJSONTrue then
  -    Exit(True);
  -  if LValue is TJSONFalse then
  -    Exit(False);
  -  if LValue is TJSONNumber then
  -    Exit(TJSONNumber(LValue).AsDouble);
  -  Result := LValue.Value;
  -end;
   
   class function TJSONObjectHelper.JSONToObject(const AClassType: TClass;
     const AJSON: TJSONObject; const AOptions: TJsonOptions): TObject;
  
positive.code:     function GetCount: Integer; inline;
      function GetPair(const Index: Integer): TJSONPair; inline;
  {$endif}
      function GetValue(const name: string): Variant;
      function GetExactPairName(const ACaseInsensitiveName: string): string;
    public
      function ReadStringValue(const AName: string; const ADefault: string = ''): string;
  
negative.code:     procedure WriteArrayValue(const AName: string; const AArray: TJSONArray); overload; inline;
      procedure WriteArrayValue<T: record>(const AName: string; const AArray: TArray<T>); overload; inline;
  
      procedure FromRecord<T: record>(ARecord: T; const AFilterProc: TToJSONFilterProc = nil); overload;
      procedure FromRecord(const ARecord: TValue; const AFilterProc: TToJSONFilterProc = nil); overload;
      function ToRecord<T: record>(const AFilterProc: TToRecordFilterProc = nil): T; overload;
  