private @Nullable Element getModule() {
      if (getModuleOf != null) {
        try {
          return (Element) getModuleOf.invoke(processing().getElementUtils(), element());
        } catch (InvocationTargetException | IllegalAccessException e) {
          return null;
        }
      }
      return null;
    }
Name is the only equivalence attribute. Basically packages are interned by name.
@return package name
value-processor/src/org/immutables/value/processor/meta/Proto.java