anchor.diff:  type
     TKMemoryStream = class(TMemoryStream)
     public
  +    procedure Write(const Value:string); reintroduce; overload;
       function Write(const Value:TKMPoint): Longint; reintroduce; overload;
       function Write(const Value:single): Longint; reintroduce; overload;
       function Write(const Value:integer): Longint; reintroduce; overload;
       function Write(const Value:byte): Longint; reintroduce; overload;
       function Write(const Value:boolean): Longint; reintroduce; overload;
  +    procedure Read(var Value:string); reintroduce; overload;
       function Read(var Value:TKMPoint): Longint; reintroduce; overload;
       function Read(var Value:single): Longint; reintroduce; overload;
       function Read(var Value:integer): Longint; reintroduce; overload;
  
positive.code: begin Result := Inherited Write(Value, SizeOf(Value)); end;
  
  
  function TKMemoryStream.Read(var Value:TKMPoint): Longint;
  begin Result := Inherited Read(Value, SizeOf(Value)); end;
  function TKMemoryStream.Read(var Value:single): Longint;
  
negative.code:     msgLoc:TKMPoint;
    end;
  
  type TKMMessageList = class(TObject)
    public
      Count:integer;
      List:array of TKMMessage; //1..Count
      destructor Destroy; override;
      procedure AddEntry(aMsgTyp:TKMMessageType; aText:string; aLoc:TKMPoint);
      procedure RemoveEntry(aID:integer);
      procedure InjectEntry(aID:integer; aMsgTyp:TKMMessageType; aText:string);
  