docs: public void addType(String fullyQualifiedTypeName) {
  		String dotBased = fullyQualifiedTypeName.replace("$", ".");
  		
  		if (locked) throw new IllegalStateException("locked");
  		int idx = fullyQualifiedTypeName.lastIndexOf('.');
  		if (idx == -1) throw new IllegalArgumentException(
  				"Only fully qualified types are allowed (and stuff in the default package is not palatable to us either!)");
  		String unqualified = fullyQualifiedTypeName.substring(idx + 1);
  		if (unqualifiedToQualifiedMap == null) throw new IllegalStateException("SingleType library");
  		
  		unqualifiedToQualifiedMap.put(unqualified.replace("$", "."), dotBased);
  		unqualifiedToQualifiedMap.put(unqualified, dotBased);
  		unqualifiedToQualifiedMap.put(fullyQualifiedTypeName, dotBased);
  		unqualifiedToQualifiedMap.put(dotBased, dotBased);
  		for (Map.Entry<String, String> e : LombokInternalAliasing.ALIASES.entrySet()) {
  			if (fullyQualifiedTypeName.equals(e.getValue())) unqualifiedToQualifiedMap.put(e.getKey(), dotBased);
  		}
  		
  		int idx2 = fullyQualifiedTypeName.indexOf('$', idx + 1);
  		while (idx2 != -1) {
  			String unq = fullyQualifiedTypeName.substring(idx2 + 1);
  			unqualifiedToQualifiedMap.put(unq.replace("$", "."), dotBased);
  			unqualifiedToQualifiedMap.put(unq, dotBased);
  			idx2 = fullyQualifiedTypeName.indexOf('$', idx2 + 1);
  		}
  	}