@Override
    @Value.Lazy
    public boolean isJacksonSerialized() {
      if (super.isJacksonSerialized()) {
        return true;
      }
      Optional<DeclaringPackage> parent = namedParentPackage();
      if (parent.isPresent()) {
        return parent.get().isJacksonSerialized();
      }
      return false;
    }
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