anchor.diff:          : canonicalize(new IntConstant(node.value));
     }
   
  -  visitDoubleLiteral(DoubleLiteral node) {
  +  @override
  +  Constant visitDoubleLiteral(DoubleLiteral node) {
       return canonicalize(makeDoubleConstant(node.value));
     }
   
  -  visitStringLiteral(StringLiteral node) {
  +  @override
  +  Constant visitStringLiteral(StringLiteral node) {
       return canonicalize(new StringConstant(node.value));
     }
   
  -  visitTypeLiteral(TypeLiteral node) {
  +  @override
  +  Constant visitTypeLiteral(TypeLiteral node) {
       final DartType type = evaluateDartType(node, node.type);
       return canonicalize(new TypeLiteralConstant(type));
     }
   
  -  visitConstantExpression(ConstantExpression node) {
  +  @override
  +  Constant visitConstantExpression(ConstantExpression node) {
       Constant constant = node.constant;
       Constant result = constant;
       if (constant is UnevaluatedConstant) {
  
positive.code:     }
    }
  
    visitConditionalExpression(ConditionalExpression node) {
      final Constant condition = _evaluateSubexpression(node.condition);
      if (condition == trueConstant) {
        return _evaluateSubexpression(node.then);
  
negative.code:     return builder.build();
    }
  
    @override
    Constant visitSetLiteral(SetLiteral node) {
      if (!node.isConst) {
        return report(
            node, templateConstEvalNonConstantLiteral.withArguments('Set'));
  