docs: private static List<ProtoFile> findRelateProtoFiles(File file, Set<String> dependencyNames) throws IOException {
          LinkedList<ProtoFile> protoFiles = new LinkedList<ProtoFile>();
          ProtoFile protoFile = ProtoSchemaParser.parse(file);
          protoFiles.addFirst(protoFile);
  
          String parent = file.getParent();
          // parse dependency, to find all PROTO file if using import command
          List<String> dependencies = protoFile.getDependencies();
          if (dependencies != null && !dependencies.isEmpty()) {
              for (String fn : dependencies) {
                  if (dependencyNames.contains(fn)) {
                      continue;
                  }
                  File dependencyFile = new File(parent, fn);
                  protoFiles.addAll(findRelateProtoFiles(dependencyFile, dependencyNames));
              }
          }
          
          List<String> publicDependencies = protoFile.getPublicDependencies();
          if (publicDependencies != null && !publicDependencies.isEmpty()) {
              for (String fn : publicDependencies) {
                  if (dependencyNames.contains(fn)) {
                      continue;
                  }
                  File dependencyFile = new File(parent, fn);
                  protoFiles.addAll(findRelateProtoFiles(dependencyFile, dependencyNames));
              }
          }
          return protoFiles;
      }