code: function () {
        if (this.complexity == null) {
          var complexity = 0;
          if (this.isToken) {
            complexity = COMPLEXITY.TEXT * this.data.join("").length + COMPLEXITY.TOKEN;
          } else {
            for (var i = 0, m = this.data.length; i < m; i++) {
              if (this.data[i]) {
                this.SetData(i,this.data[i].Collapse());
                complexity += this.data[i].complexity;
              }
            }
            if (m > 1) complexity += m * COMPLEXITY.CHILD;
          }
          if (this.attrNames && !("complexity" in this)) this.attrNames.push(COMPLEXATTR);
          if (this.attr) this.attr[COMPLEXATTR] = complexity;
          this.complexity = complexity;
        }
        return this.complexity;
      }
docs: If we don't have a cached complexity value, For token elements, just use the data length, Otherwise Add up the complexities of the (collapsed) children and add the child complexity based on the number of children Cache the complexity result return the complexity