code: @Override
    protected Expression visitNullCoalescingOpNode(NullCoalescingOpNode node) {
      List<Expression> operands = visitChildren(node);
      Expression consequent = operands.get(0);
      Expression alternate = operands.get(1);
      // if the consequent isn't trivial we should store the intermediate result in a new temporary
      if (!consequent.isCheap()) {
        consequent = codeGenerator.declarationBuilder().setRhs(consequent).build().ref();
      }
      return Expression.ifExpression(consequent.doubleNotEquals(Expression.LITERAL_NULL), consequent)
          .setElse(alternate)
          .build(codeGenerator);
    }
docs: Implementations for operators.