@Value.Lazy
    public boolean isEnclosing() {
      if (EnclosingMirror.isPresent(element())) {
        return true;
      }
      if (isTopLevel()) {
        for (MetaAnnotated metaAnnotated : metaAnnotated()) {
          if (metaAnnotated.isEnclosing()) {
            return true;
          }
        }
      }
      return false;
    }
returns this class if it's top level or enclosing top level type.
@return accossiated top level type.
value-processor/src/org/immutables/value/processor/meta/Proto.java