private static void parseNameDescriptionObj(
      String docComment,
      int startIdx,
      MethodStructure methodStructure,
      String annotation,
      ParseProcessor processor) {
    int annotationBegin = docComment.indexOf(annotation, startIdx);
    if (annotationBegin == -1) {
      return;
    }
    int nameStart = docComment.indexOf(" ", annotationBegin) + 1;
    int nameEnd = docComment.indexOf(" ", nameStart);
    if (nameEnd > nameStart) {
      String name = docComment.substring(nameStart, nameEnd);

      int descriptionEnd = docComment.indexOf("@", nameEnd) - 1;

      String description = "";
      if (descriptionEnd > nameEnd) {
        description = docComment.substring(nameEnd + 1, descriptionEnd);
      }

      processor.processEntry(methodStructure, name, description);

      if (descriptionEnd > 0) {
        parseNameDescriptionObj(docComment, descriptionEnd, methodStructure, annotation, processor);
      }
    }
  }
  private static void parseValueObj(
      String docComment,
      MethodStructure methodStructure,
      String annotation,
      ParseProcessor processor) {
    int annotationBegin = docComment.indexOf(annotation);
    if (annotationBegin == -1) {
      return;
    }
    int valStart = annotationBegin + annotation.length() + 1;
    int valEnd = docComment.indexOf("@", valStart);
    if (valEnd == -1) {
      valEnd = docComment.length();
    }
    if (valEnd > valStart) {
      String val = docComment.substring(valStart, valEnd);

      processor.processEntry(methodStructure, val);
    }
  }