docs: private static List<TypeElement> fetchAllNestedTypes(MessageElement type) {
          List<TypeElement> ret = new ArrayList<TypeElement>();
  
          List<TypeElement> nestedTypes = type.nestedElements();
          ret.addAll(nestedTypes);
          for (TypeElement t : nestedTypes) {
              if (t instanceof MessageElement) {
                  List<TypeElement> subNestedTypes = fetchAllNestedTypes((MessageElement) t);
                  ret.addAll(subNestedTypes);
              }
          }
          return ret;
      }