docs: @Nullable
    private static String getFullTagText(HtmlTagNode openTagNode) {
      class Visitor implements NodeVisitor<Node, VisitDirective> {
        boolean isConstantContent = true;
  
        @Override
        public VisitDirective exec(Node node) {
          if (node instanceof RawTextNode
              || node instanceof HtmlAttributeNode
              || node instanceof HtmlAttributeValueNode
              || node instanceof HtmlOpenTagNode
              || node instanceof HtmlCloseTagNode) {
            return VisitDirective.CONTINUE;
          }
          isConstantContent = false;
          return VisitDirective.ABORT;
        }
      }
      Visitor visitor = new Visitor();
      SoyTreeUtils.visitAllNodes(openTagNode, visitor);
      if (visitor.isConstantContent) {
        // toSourceString is lame, but how this worked before
        return openTagNode.toSourceString();
      }
      return null;
    }