public TreeMap<String, List<ThreadStack>> getThreadDumps(LineNumberReader reader,
      String logFileName) {
    TreeMap<String, List<ThreadStack>> result = new TreeMap<>();

    String line = null;
    int stackNumber = 1;
    try {
      while ((line = reader.readLine()) != null) {
        if (line.startsWith("Full thread dump")
            || line.startsWith(CliStrings.STACK_TRACE_FOR_MEMBER)) {
          int lineNumber = reader.getLineNumber();
          List<ThreadStack> stacks = getStacks(reader);
          if (stacks.size() > 0) {
            final String buffer = "[Stack #" + stackNumber++
                + " from " + logFileName + " line " + lineNumber + "]\n" + line
                + "\n";
            result.put(buffer, stacks);
          }
          if (ONE_STACK) {
            break;
          }
        }
      }
    } catch (IOException ioe) {
      throw new RuntimeException("Something went wrong processing " + logFileName, ioe);
    }
    return result;
  }
@param args names of files to scan for suspicious threads in thread-dumps
geode-core/src/main/java/org/apache/geode/internal/util/PluckStacks.java