code: private KeyValueNode<String> parseMultiLineMetaData(final ParserData parserData, final String key, final String value,
              final int lineNumber) throws ParsingException {
          // Check if the starting brace is found, if not then assume that there is only one line.
          int startingPos = StringUtilities.indexOf(value, '[');
          if (startingPos != -1) {
              final StringBuilder multiLineValue = new StringBuilder(value);
              // If the ']' character isn't on this line try the next line
              if (StringUtilities.indexOf(value, ']') == -1) {
                  multiLineValue.append("\n");
  
                  // Read the next line and increment counters
                  String newLine = parserData.getLines().poll();
                  while (newLine != null) {
                      multiLineValue.append(newLine).append("\n");
                      parserData.setLineCount(parserData.getLineCount() + 1);
                      // If the ']' character still isn't found keep trying
                      if (StringUtilities.lastIndexOf(multiLineValue.toString(), ']') == -1) {
                          newLine = parserData.getLines().poll();
                      } else {
                          break;
                      }
                  }
              }
  
              // Check that the ']' character was found and that it was found before another '[' character
              final String finalMultiLineValue = multiLineValue.toString().trim();
              if (StringUtilities.lastIndexOf(finalMultiLineValue, ']') == -1 || StringUtilities.lastIndexOf(finalMultiLineValue,
                      '[') != startingPos) {
                  throw new ParsingException(format(ProcessorConstants.ERROR_INVALID_MULTILINE_METADATA_MSG, lineNumber,
                          key + " = " + finalMultiLineValue.replaceAll("\n", "\n          ")));
              } else {
                  final String finalValue = finalMultiLineValue.substring(1, finalMultiLineValue.length() - 1);
                  return new KeyValueNode<String>(key, finalValue);
              }
          } else {
              return new KeyValueNode<String>(key, value, lineNumber);
          }
      }
docs: Parses a multiple line metadata element.
  
  @param parserData
  @param key        The metadata key.
  @param value      The value on the metadata line.
  @param lineNumber The initial line number.
  @return The parsed multiple line value for the metadata element.
  @throws ParsingException