code: function multiplyLikeTerms(node, polynomialOnly=false) {
    if (!Node.Type.isOperator(node)) {
      return Node.Status.noChange(node);
    }
    let status;
  
    if (!polynomialOnly) {
      status = arithmeticSearch(node);
      if (status.hasChanged()) {
        status.changeType = ChangeTypes.MULTIPLY_COEFFICIENTS;
        return status;
      }
  
      status = multiplyFractionsSearch(node);
      if (status.hasChanged()) {
        status.changeType = ChangeTypes.MULTIPLY_COEFFICIENTS;
        return status;
      }
    }
  
    status = multiplyPolynomialTerms(node);
    if (status.hasChanged()) {
      status.changeType = ChangeTypes.MULTIPLY_COEFFICIENTS;
      return status;
    }
  
    return Node.Status.noChange(node);
  }
docs: Multiplies a list of nodes that are polynomial like terms. Returns a node. The polynomial nodes should *not* have coefficients. (multiplying coefficients is handled in collecting like terms for multiplication)