public static ClassAndMethodDetails create(LineNumberReader in) throws IOException {
    String line;
    while ((line = in.readLine()) != null) {
      line = line.trim();
      if (line.length() == 0 || line.startsWith("#") || line.startsWith("//")) {
        continue;
      }
      break;
    }
    if (line == null) {
      return null;
    }
    ClassAndMethodDetails instance = new ClassAndMethodDetails();
    String[] fields = line.split(",");
    try {
      instance.className = fields[0];
      int numMethods = Integer.parseInt(fields[1]);
      for (int i = 0; i < numMethods; i++) {
        line = in.readLine();
        fields = line.split(",");
        String methodName = fields[0];
        int codeLength = Integer.parseInt(fields[1]);
        if (fields.length != 2) {
          System.err.println("Method detail has been tampered with on line " + in.getLineNumber());
          continue;
        }
        instance.methods.put(methodName, codeLength);
      }
      return instance;
    } catch (Exception e) {
      throw new IOException("Error parsing line " + in.getLineNumber(), e);
    }
  }
A class used to store the names of data-serializable classes and the sizes of their
toData/fromData methods.
geode-junit/src/main/java/org/apache/geode/codeAnalysis/ClassAndMethodDetails.java