@NotNull
  protected Pair<Section, Integer> parseSection(int sectionStartLine) {
    final Pair<Substring, Integer> parsedHeader = parseSectionHeader(sectionStartLine);
    if (parsedHeader.getFirst() == null) {
      return Pair.create(null, sectionStartLine);
    }
    final String normalized = getNormalizedSectionTitle(parsedHeader.getFirst().toString());
    if (normalized == null) {
      return Pair.create(null, sectionStartLine);
    }
    final List<SectionField> fields = new ArrayList<>();
    final int sectionIndent = getLineIndentSize(sectionStartLine);
    int lineNum = consumeEmptyLines(parsedHeader.getSecond());
    while (!isSectionBreak(lineNum, sectionIndent)) {
      if (!isEmpty(lineNum)) {
        final Pair<SectionField, Integer> parsedField = parseSectionField(lineNum, normalized, sectionIndent);
        if (parsedField.getFirst() != null) {
          fields.add(parsedField.getFirst());
          lineNum = parsedField.getSecond();
          continue;
        }
      }
      lineNum++;
    }
    return Pair.create(new Section(parsedHeader.getFirst(), fields), lineNum);
  }
@NotNull
  protected Pair<Section, Integer> parseSection(int sectionStartLine)