anchor.diff:      FreeAndNil(paramList);
       FreeAndNil(convertList);
       FreeAndNil(typeList);
  +    FreeAndNil(splitList);
     end;
   end;
   
  
positive.code:     'TKMHandIndex', 'TKMHouse', 'TKMUnit', 'TKMUnitGroup',
      'TKMHouseType', 'TKMWareType', 'TKMFieldType', 'TKMUnitType',
      'THouseType', 'TWareType', 'TFieldType', 'TUnitType',
      'array of const', 'array of Integer'
    );
  
  var
  
negative.code: }
  function TForm1.paramParser(aString: String): String;
  var
    i, j, nextType: Integer;
    inList: Boolean;
    paramList, convertList, typeList, splitList: TStringList;
    resultStr, varType: String;
    paramHolder: Array of tParamHolder;
  begin
    try
      paramList   := TStringList.Create;
      convertList := TStringList.Create;
      typeList    := TStringList.Create;
      splitList   := TStringList.Create;
      resultStr   := '';
      j           := 0;
      nextType    := 0;
  
      splitList.AddStrings(aString.Split([' ']));
  
      // Re-combine arrays
      for i := 0 to splitList.Count - 1 do
      begin
        splitList[i] := splitList[i].TrimRight([',', ':', ';']);
  
        if splitList[i] = 'array' then
        begin
          nextType := i + 2;
          // For some reason this kept giving 'array of Integer;' hence the trim
          paramList.Add((splitList[i] + ' ' + splitList[nextType - 1] + ' ' + splitList[nextType]).TrimRight([',', ':', ';']));
        end else
          // Skip unused stuff
          if not ((splitList[i] = 'of') or (splitList[i] = 'const') or (i = nextType)) then
            paramList.Add(splitList[i]);
      end;
  
      // Bind variable names to their type
      for i := 0 to paramList.Count - 1 do
      begin
        inList := False;
        for varType in VAR_TYPES do
          if paramList[i] = varType then
          begin
  