anchor.diff:  
   procedure TJSONProtocolImpl.WriteMessageBegin( aMsg : IMessage);
   begin
  +  ResetContextStack;  // THRIFT-1473
  +
     WriteJSONArrayStart;
     WriteJSONInteger(VERSION);
   
  
positive.code:     FReader : TLookaheadReader;
  
      // Push/pop a new JSON context onto/from the stack.
      procedure PushContext( aCtx : TJSONBaseContext);
      procedure PopContext;
  
  
negative.code: destructor TJSONProtocolImpl.Destroy;
  begin
    try
      ResetContextStack;  // free any contents
      FreeAndNil( FReader);
      FreeAndNil( FContext);
      FreeAndNil( FContextStack);
    finally
      inherited Destroy;
    end;
  end;
  
  
  procedure TJSONProtocolImpl.ResetContextStack;
  begin
    while FContextStack.Count > 0
    do PopContext;
  end;
  
  
  procedure TJSONProtocolImpl.PushContext( aCtx : TJSONBaseContext);
  begin
    FContextStack.Push( FContext);
    FContext := aCtx;
  end;
  
  
  procedure TJSONProtocolImpl.PopContext;
  begin
    FreeAndNil(FContext);
    FContext := FContextStack.Pop;
  end;
  
  
  