anchor.diff:    exit aReviver.CallEx(aCaller, aRoot,aName, lItem);
   end;
   
  +
   method GlobalObject.JSONStr(aExecutionContext: ExecutionContext; aStack: List<Object>; aGap, aIndent: string; aReplacerFunction: EcmaScriptBaseFunctionObject; 
         aProplist: List<String>; aWork: EcmaScriptObject; aValue: String): string;
   begin
     var value := aWork.Get(aExecutionContext, 0, aValue);
     var lObj := EcmaScriptObject(Value);
  -  if lObj<> nil then begin
  +  if  (assigned(lObj))  then  begin
       var lCall := EcmaScriptBaseFunctionObject(lObj.Get(aExecutionContext, 0, 'toJSON'));
  -    if lCall <> nil then
  -      value := lCall.CallEx(aExecutionContext, lObj, aValue);
  +    if  (assigned(lCall))  then
  +      exit  (String(lCall.CallEx(aExecutionContext, lObj, aValue)));
     end;
     if aReplacerFunction <> nil then begin
       value := aReplacerFunction.CallEx(aExecutionContext, aWork,aValue, Value);
  
positive.code:     if lObj.Class = 'String' then Value := lObj.Value;
      if lObj.Class = 'Boolean' then Value := lObj.Value;
    end;
    if value = nil then exit 'null';
    if value is boolean then begin 
      if boolean(value) then 
        exit 'true';
      exit 'false';
    end;
    if value is string then exit JSONQuote(String(value));
    if value is double then begin
      if Double.IsInfinity(Double(value)) then
        exit 'null'
      else
        exit Double(value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
    end;
    if value is Int32 then exit Int32(Value).ToString;
    if value is Int64 then exit Int64(Value).ToString;
    lObj := EcmaScriptObject(VAlue);
    if (lObj <> nil) and ((lObj is not EcmaScriptBaseFunctionObject) or (lObj is EcmaScriptObjectWrapper)) then begin
      if aStack.Contains(lObj) then RaiseNativeError(NativeErrorType.TypeError, 'Recursive JSON structure');
  
negative.code:   private
      method JSONStr(aExecutionContext: ExecutionContext; aStack: List<Object>; aGap, aIndent: string; aReplacerFunction: EcmaScriptBaseFunctionObject; 
        aProplist: List<String>; aWork: EcmaScriptObject; aValue: String): string;
    end;
  
  
    JSON = public static class
    public
      class method QuoteString(value: String): String;
      class method ToString(value: Object): String;
    end;
  
  
  implementation
  
  method GlobalObject.CreateJSON: EcmaScriptObject;
  