anchor.diff:      class property Instance : TStringCache read FInstance;
     end;
   
  -  TStringCacheDictionary<TKey> = class(TEnumerable<TPair<TKey, string>>)
  -  strict private
  -    type
  -      TKeyStringEnumerator = class(TEnumerator<TPair<TKey,string>>)
  -      private
  -        FDictionary: TStringCacheDictionary<TKey>;
  -        FInternalEnum : TDictionary<TKey, TStringId>.TPairEnumerator;
  -      protected
  -        function DoGetCurrent: TPair<TKey, string>; override;
  -        function DoMoveNext: Boolean; override;
  -      public
  -        constructor Create(const ADictionary: TStringCacheDictionary<TKey>);
  -        destructor Destroy; override;
  -      end;
  -  private
  -    FKeyToId : TDictionary<TKey, TStringId>;
  -
  -    function GetItem(const Key: TKey): string;
  -    procedure SetItem(const Key: TKey; const Value: string);
  -    function GetCount : Integer;
  -  protected
  -    function DoGetEnumerator: TEnumerator<TPair<TKey, string>>; override;
  -  public
  -    constructor Create;
  -    destructor Destroy; override;
  -
  -    function TryGetValue(const Key: TKey; out Value: string): Boolean;
  -    procedure AddOrSetValue(const Key: TKey; const Value: string);
  -    function ContainsKey(const Key: TKey): Boolean;
  -    function ToArray: TArray<TPair<TKey, string>>; override;
  -
  -    property Items[const Key: TKey]: string read GetItem write SetItem; default;
  -    property Count: Integer read GetCount;
  -  end;
  -
   implementation
   
   uses
  
positive.code:       end;
    strict private
      FStringToId : TDictionary<TStringRec, TStringId>;
      FRefCount : NativeUInt;
      FIsPersistent : Boolean;
  
      class var FInstance : TStringCache;
  
negative.code:   Inc(FUsageCount);
  end;
  
  end.
  