anchor.diff:    gmrMatchN, gmrMatchM, settingMatch: TRegExp;
     success: boolean;
   begin
  -  ghash := TGmrHash.Create;
  -  settings := TStringHash.Create;
  +  Fsettings := TStringHash.Create;
  +  ghash := TGmrHash.Create(Fsettings);
     goal := nil;
     cleanup := TRegExp.create('\s+', [MultiLine, SingleLine, Extended]);
     settingMatch := TRegExp.create('^\s*(\w+)\s*=>\s*(.*)$', [Extended]);
  
positive.code:   done: boolean;
    term: string;
    nonterm: string;
    dumbAtom: PGmrAtom;
  begin
    new(dumbNode);
  
negative.code:     private
        ghash: TGmrHash;
        goal: PGmrNode;
        Fsettings: TStringHash;
      public
        constructor init(inF: TFile);
        destructor destroy; override;
        function getHash: TGmrHash;
        function getGoal: PGmrNode;
        function getHashNode(s: string): AGmrNode;
      public
        property settings: TStringHash read Fsettings;
    end;
  
  implementation
  
  var
    gmr_re: TRegExp;
    terminalSpaces: TRegExp;
  
  constructor TGmrHash.create(in_settings: TStringHash);
  begin
    settings := in_settings;
  end;
  
  destructor TGmrHash.destroy;
  begin
  