anchor.diff:      fListActions, fListEvents, fListStates: TStringList;
       fSafeToWrite: Boolean;
       procedure txtParser(aFile: String; aList: TStringList);
  -  end;
  +    function paramParser(aString: String): String;
  +  end;
  +
  +  tParamHolder = Record
  +    Name: String;
  +    varType: Integer;
  +  end;
  +
  +const
  +  VAR_TYPES: array[0..39] of String = (
  +    'Byte', 'Shortint', 'Smallint', 'Word', 'Integer', 'Cardinal', 'Longint',
  +    'Longword', 'Int64', 'QWord', 'Real', 'Single', 'Double', 'Extended',
  +    'Currency', 'TByteSet', 'Boolean', 'ByteBool', 'WordBool', 'LongBool',
  +    'Char', 'WideChar', 'PChar', 'String', 'AnsiString', 'UnicodeString',
  +    'TKMHandIndex', 'TKMHouse', 'TKMUnit', 'TKMUnitGroup',
  +    'TKMHouseType', 'TKMWareType', 'TKMFieldType', 'TKMUnitType',
  +    'THouseType', 'TWareType', 'TFieldType', 'TUnitType',
  +    'array of const', 'array of Integer'
  +  );
   
   var
     Form1: TForm1;
  
positive.code:       // Format procedures
        if SourceTxt[i+iPlus].StartsWith('procedure') and not (versionStr = '') then
        begin
          restStr := ' | ' + SourceTxt[i+iPlus].Substring(SourceTxt[i+iPlus].IndexOf('.') + 1);
          restStr := ReplaceStr(restStr, 'Proc', 'On');
  
          if restStr.Contains('(') then
          begin
            restStr := ReplaceStr(restStr, '(', descStr + ' | `');
            restStr := restStr.TrimRight([')', ';']) + '` | |';
          end else
            restStr := restStr.TrimRight([';']) + descStr + ' | | |';
  
          finalStr := versionStr + restStr;
        end;
  
negative.code:     if FileExists(edtActionsFile.Text) then
      begin
        fListActions.Clear;
        fListActions.Add('####Actions' + sLineBreak);
        txtParser(edtActionsFile.Text, fListActions);
        txtParserOutput.Lines.AddStrings(fListActions);
      end else
  