docs: private static List<Class<?>> createEnumClasses(Map<String, EnumElement> enumTypes,
              Map<String, String> packageMapping, boolean generateSouceOnly, File sourceOutputDir,
              Set<String> compiledClass, Map<String, String> mappedUniName, boolean isUniName) {
  
          List<Class<?>> ret = new ArrayList<Class<?>>();
          Set<String> enumNames = new HashSet<String>();
          Collection<EnumElement> enums = enumTypes.values();
          for (EnumElement enumType : enums) {
              String name = enumType.name();
              if (enumNames.contains(name)) {
                  continue;
              }
              enumNames.add(name);
              String packageName = packageMapping.get(name);
              Class cls = checkClass(packageName, enumType, mappedUniName, isUniName);
              if (cls != null) {
                  ret.add(cls);
                  continue;
              }
              CodeDependent codeDependent = createCodeByType(enumType, true, packageName, mappedUniName, isUniName);
              compiledClass.add(codeDependent.name);
              compiledClass.add(packageName + PACKAGE_SPLIT_CHAR + codeDependent.name);
              if (!generateSouceOnly) {
                  Class<?> newClass = JDKCompilerHelper.getJdkCompiler().compile(codeDependent.getClassName(),
                          codeDependent.code, ProtobufIDLProxy.class.getClassLoader(), null, -1);
                  ret.add(newClass);
              } else {
                  // need to output source code to target path
                  writeSourceCode(codeDependent, sourceOutputDir);
              }
          }
  
          return ret;
      }