code: @Value.Lazy
    String typeImmutableEnclosingSimpleName() {
      DeclaringType declaringType = protoclass().enclosingOf().get();
      String enclosingSimpleName = declaringType.element().getSimpleName().toString();
      String enclosingRawName = names().rawFromAbstract(enclosingSimpleName);
      // Here we checking for having both enclosing and value
      // if we had protoclass it would be kind().isEnclosing() && kind().isValue()
      Naming naming = declaringType.isImmutable()
          ? names().namings.typeImmutable
          : names().namings.typeImmutableEnclosing;
  
      return naming.apply(enclosingRawName);
    }
docs: Walks to the enclosing type's simple names and applies naming convention.
  This shortcut/fix shows deficiency of model (it's probably more complicated than needed).
  @return enclosing immutable name