public Optional<DeclaringType> asType() {
      return this instanceof DeclaringType
          ? Optional.of((DeclaringType) this)
          : Optional.<DeclaringType>absent();
    }
Introspection supertype for the {@link DeclaringType} and {@link DeclaringPackage}
value-processor/src/org/immutables/value/processor/meta/Proto.java