private String buildDocumentString(List<ParseTreeNode> trees) {
    StringBuilder buffer = new StringBuilder();

    for (ParseTreeNode tree : trees) {
      List<ParseTreeNode> terminals = getTerminalNodes(tree);
      for (ParseTreeNode terminal : terminals) {
        if (terminal.word != null) {
          buffer.append(terminal.word);
          while (buffer.length() < terminal.end) {
            buffer.append(' ');
          }
        }
      }

      // set last character to newline
      if (buffer.charAt(buffer.length() - 1) == ' ') {
        buffer.setCharAt(buffer.length() - 1, '\n');
      }
    }

    return buffer.toString();
  }