@Override @Value.Derived @Value.Auxiliary public DeclaringPackage packageOf() { Element e = element(); for (; e.getKind() != ElementKind.PACKAGE; e = e.getEnclosingElement()) {} return interner() .forPackage( ImmutableProto.DeclaringPackage.builder() .environment(environment()) .interner(interner()) .element((PackageElement) e) .build()); }
@Value.Lazy Optional<DeclaringPackage> namedParentPackage() { String parentPackageName = SourceNames.parentPackageName(element()); if (!parentPackageName.isEmpty()) { @Nullable PackageElement parentPackage = environment().processing().getElementUtils().getPackageElement(parentPackageName); if (parentPackage != null) { return Optional.of( interner() .forPackage( ImmutableProto.DeclaringPackage.builder() .environment(environment()) .interner(interner()) .element(parentPackage) .build())); } } return Optional.absent(); }