anchor.diff:      return Ok([hir.AssignmentExpression(getId(expression), left, right)]);
     }
   }
  +
  +hir.CandyType _unionOrUnit(List<hir.CandyType> types) {
  +  return types.isEmpty ? hir.CandyType.unit : hir.CandyType.union(types);
  +}
  
positive.code:     }
  
      final type = expressionType.valueOrNull ??
          hir.CandyType.union({
            if (thenBody.isNotEmpty) thenBody.last.type,
            if (elseBody.isNotEmpty) elseBody.last.type,
          }.toList());
  
negative.code:       for (final expression in body) {
          expression.accept(visitor);
        }
        type = _unionOrUnit(visitor.breakTypes.toList());
      }
  
      return Ok([hir.LoopExpression(getId(loop), body, type)]);
  