code: public String data() {
          StringBuilder sb = StringUtil.borrowBuilder();
  
          for (Node childNode : childNodes) {
              if (childNode instanceof DataNode) {
                  DataNode data = (DataNode) childNode;
                  sb.append(data.getWholeData());
              } else if (childNode instanceof Comment) {
                  Comment comment = (Comment) childNode;
                  sb.append(comment.getData());
              } else if (childNode instanceof Element) {
                  Element element = (Element) childNode;
                  String elementData = element.data();
                  sb.append(elementData);
              } else if (childNode instanceof CDataNode) {
                  // this shouldn't really happen because the html parser won't see the cdata as anything special when parsing script.
                  // but incase another type gets through.
                  CDataNode cDataNode = (CDataNode) childNode;
                  sb.append(cDataNode.getWholeText());
              }
          }
          return StringUtil.releaseBuilder(sb);
      }
docs: Get the combined data of this element. Data is e.g. the inside of a {@code script} tag. Note that data is NOT the
  text of the element. Use {@link #text()} to get the text that would be visible to a user, and {@link #data()}
  for the contents of scripts, comments, CSS styles, etc.
  
  @return the data, or empty string if none
  
  @see #dataNodes()