anchor.diff:            D:=O.Items[i];
             N:=O.Names[i];
             If D.JSONType=jtNull then
  -          begin
  -            IO:=Nil;
  -            AStrings.AddObject(O.Names[i],IO);
  -          end
  +            IO:=Nil
             else if D.JSONType=jtObject then
  -          begin
  -            IO:=GetObject(AStrings,N,TJSONOBject(D),Nil);
  -            AStrings.AddObject(O.Names[i],IO);
  -
  -          end
  -          //else if D.JSONType=jtString then
  -          //begin
  -          //  AStrings.Add();
  -          //end
  +            IO:=GetObject(AStrings,N,TJSONOBject(D),Nil)
             else
               Error(SErrUnsupportedStringsObjectType,[D,JSONTypeName(D.JSONType)]);
  -
  +          AStrings.AddObject(O.Names[i],IO);
             end;
           end;
         end;
  
positive.code: 
      // Stream a collection - always returns an array
      function StreamCollection(Const ACollection: TCollection): TJSONData; virtual;
      // Stream a TStrings instance as an array
      function StreamTStringsArray(Const AStrings: TStrings): TJSONArray;
      // Stream a TStrings instance as an object
  
negative.code:     tkFloat :
        begin
        if (TI=TypeInfo(TDateTime)) and (PropData.JSONType=jtString) then
          SetFloatProp(AObject,PI,ExtractDateTime(PropData.AsString))
        else
          SetFloatProp(AObject,PI,PropData.AsFloat)
        end;
  