@Value.Lazy
    public Optional<String[]> depluralize() {
      @Nullable String[] dictionary = null;

      Optional<String[]> depluralize = packageOf().depluralize();
      if (depluralize.isPresent()) {
        dictionary = concat(dictionary, depluralize.get());
      }

      if (declaringType().isPresent()) {
        DeclaringType type = declaringType().get();

        if (type.enclosingTopLevel().isPresent()) {
          depluralize = type.enclosingTopLevel().get().depluralize();

          if (depluralize.isPresent()) {
            dictionary = concat(dictionary, depluralize.get());
          }
        }

        depluralize = type.depluralize();
        if (depluralize.isPresent()) {
          dictionary = concat(dictionary, depluralize.get());
        }
      }

      return Optional.fromNullable(dictionary);
    }
Element used mostly for error reporting,
real model provided by {@link #sourceElement()}.
value-processor/src/org/immutables/value/processor/meta/Proto.java