code: public Node unwrap() {
          Validate.notNull(parentNode);
          final List<Node> childNodes = ensureChildNodes();
          Node firstChild = childNodes.size() > 0 ? childNodes.get(0) : null;
          parentNode.addChildren(siblingIndex, this.childNodesAsArray());
          this.remove();
  
          return firstChild;
      }
docs: Removes this node from the DOM, and moves its children up into the node's parent. This has the effect of dropping
  the node but keeping its children.
  <p>
  For example, with the input html:
  </p>
  <p>{@code <div>One <span>Two <b>Three</b></span></div>}</p>
  Calling {@code element.unwrap()} on the {@code span} element will result in the html:
  <p>{@code <div>One Two <b>Three</b></div>}</p>
  and the {@code "Two "} {@link TextNode} being returned.
  
  @return the first child of this node, after the node has been unwrapped. Null if the node had no children.
  @see #remove()
  @see #wrap(String)