@Override
      protected T doBackward(String fromName) {
        Preconditions.checkArgument(names.containsValue(fromName), "name %s not found", fromName);
        return names.inverse().get(fromName);
      }
Gives an unique (generated) name to objects so they can be used as identifiers in queries.
Same objects (as defined by object equality) will have same name.

@param <T>
criteria/common/src/org/immutables/criteria/backend/UniqueCachedNaming.java