code: private LexNameSet nameFix(LexNameSet names)
  	{
  		LexNameSet result = new LexNameSet();
  		
  		for (ILexNameToken name: names)
  		{
  			result.add(nameFix(name));
  		}
  		
  		return result;
  	}
docs: We have to "fix" names to include equals and hashcode methods that take the type qualifier
  into account. This is so that we can distinguish (say) f(nat) and f(char). It also allows
  us to realise that f(nat1) and f(nat) are "the same".