code: @Override
    @SuppressWarnings("fallthrough")
    public Node optimizeSubtree(Node node) {
      switch (node.getToken()) {
        case ASSIGN_SUB:
          return reduceSubstractionAssignment(node);
  
        case TRUE:
        case FALSE:
          return reduceTrueFalse(node);
  
        case NEW:
          node = tryFoldStandardConstructors(node);
          if (!node.isCall()) {
            return node;
          }
          // Fall through on purpose because tryFoldStandardConstructors() may
          // convert a NEW node into a CALL node
        case CALL:
          Node result =  tryFoldLiteralConstructor(node);
          if (result == node) {
            result = tryFoldSimpleFunctionCall(node);
            if (result == node) {
              result = tryFoldImmediateCallToBoundFunction(node);
            }
          }
          return result;
  
        case RETURN:
          return tryReduceReturn(node);
  
        case COMMA:
          // TODO(b/63630312): should flatten an entire comma expression in a single pass.
          return trySplitComma(node);
  
        case NAME:
          return tryReplaceUndefined(node);
  
        case ARRAYLIT:
          return tryMinimizeArrayLiteral(node);
  
        case GETPROP:
          return tryMinimizeWindowRefs(node);
  
        case TEMPLATELIT:
          return tryTurnTemplateStringsToStrings(node);
  
        case MUL:
        case AND:
        case OR:
        case BITOR:
        case BITXOR:
        case BITAND:
          return tryRotateAssociativeOperator(node);
  
        default:
          return node; //Nothing changed
      }
    }
docs: Tries apply our various peephole minimizations on the passed in node.