anchor.diff:  
   function TmwBasePasLex.GetToken: string;
   begin
  -  SetString(Result, (FBuffer.Buf + FTokenPos), GetTokenLen);
  +  {$ifdef USESTRINGCACHE}
  +    Result := TStringCache.Instance.AddAndGet(FBuffer.Buf + FTokenPos, GetTokenLen);
  +  {$else}
  +    SetString(Result, (FBuffer.Buf + FTokenPos), GetTokenLen);
  +  {$endif}
   end;
   
   function TmwBasePasLex.GetTokenLen: Integer;
  
positive.code: implementation
  
  uses
    StrUtils;
  
  type
    TmwPasLexExpressionEvaluation = (leeNone, leeAnd, leeOr);
  
negative.code: 
    New(FBuffer);
    FillChar(FBuffer^, SizeOf(TBufferRec), 0);
  
    {$ifdef USESTRINGCACHE}
      TStringCache.Instance.IncRef;
    {$endif}
  end;
  
  destructor TmwBasePasLex.Destroy;
  begin
    {$ifdef USESTRINGCACHE}
      TStringCache.Instance.DecRef;
    {$endif}
  
    if not FBuffer.SharedBuffer then
      FreeMem(FBuffer.Buf);
  
  