anchor.diff:      function HasKey(aIndex: Word): Boolean;
       function GetCharFromVK(aKey: Word): String;
       property Keys[aIndex: Word]: Integer read GetKeys; default;
  -    procedure Save(aStream: TKMemoryStream);
       procedure SaveKey(aKeyID: Integer; aKeyValue: Word);
  -    procedure Load(aStream: TKMemoryStream);
     end;
   
   var
  
positive.code:   if (SL.Count > 0) or FileExists(FILE_PATH) then
      SL.SaveToFile(FILE_PATH{$IFDEF WDC}, TEncoding.UTF8{$ENDIF});
    SL.Free;
  end;
  
  
  procedure TKMKeyLibraryMulti.Load(aStream: TKMemoryStream);
  var
    I,K: Integer;
    KCount, aKeyCount: Integer;
    curK: AnsiString;
    Tmp: String;
  begin
    SetLength(fKeys, 1);
  
    aStream.Read(KCount);
    for I := 0 to KCount - 1 do
    begin
      aStream.ReadA(curK);
      aStream.Read(aKeyCount);
  
      SetLength(fKeys, aKeyCount);
      for K := 0 to aKeyCount - 1 do
        aStream.Read(fKeys[K]);
    end;
  end;
  
  
  
negative.code: end;
  
  
  procedure TKMKeyLibraryMulti.SaveKey(aKeyID: Integer; aKeyValue: Word);
  var
    SL: TStringList;
  