code: public List<String> getPossiblePaths(int maxDepth) {
          if (allDissectors.isEmpty()) {
              return Collections.emptyList(); // nothing to do.
          }
  
          try {
              assembleDissectors();
          } catch (MissingDissectorsException | InvalidDissectorException e) {
              // Simply swallow this one
          }
          List<String> paths = new ArrayList<>();
  
          Map<String, List<String>> pathNodes = new HashMap<>();
  
          for (Dissector dissector : allDissectors) {
              final String inputType = dissector.getInputType();
              if (inputType == null) {
                  LOG.error("Dissector returns null on getInputType(): [{}]", dissector.getClass().getCanonicalName());
                  return Collections.emptyList();
              }
  
              final List<String> outputs = dissector.getPossibleOutput();
  
              if (LOG.isDebugEnabled()) {
                  LOG.debug("------------------------------------");
                  LOG.debug("Possible: Dissector IN {}", inputType);
                  for (String output: outputs) {
                      LOG.debug("Possible:          --> {}", output);
                  }
              }
  
              List<String> existingOutputs = pathNodes.get(inputType);
              if (existingOutputs != null) {
                  outputs.addAll(existingOutputs);
              }
              pathNodes.put(inputType, outputs);
          }
  
          findAdditionalPossiblePaths(pathNodes, paths, "", rootType, maxDepth, "");
  
          for (Entry<String, Set<String>> typeRemappingSet: typeRemappings.entrySet()) {
              for (String typeRemapping: typeRemappingSet.getValue()) {
  
                  String remappedPath = typeRemapping + ':' + typeRemappingSet.getKey();
                  LOG.debug("Adding remapped path: {}", remappedPath);
                  paths.add(remappedPath);
                  findAdditionalPossiblePaths(pathNodes, paths, typeRemappingSet.getKey(), typeRemapping, maxDepth - 1, "");
              }
          }
  
          return paths;
      }
docs: This method is for use by the developer to query the parser about
  the possible paths that may be extracted.
  @param maxDepth The maximum recursion depth
  @return A list of all possible paths that could be determined automatically.