anchor.diff:      } else if (condition is UnevaluatedConstant) {
         return unevaluated(
             node,
  -          new ConditionalExpression(unique(condition.expression), node.then,
  -              node.otherwise, node.staticType));
  +          new ConditionalExpression(
  +              unique(condition.expression),
  +              cloner.clone(node.then),
  +              cloner.clone(node.otherwise),
  +              node.staticType));
       } else {
         throw new _AbortCurrentEvaluation(errorReporter.invalidDartType(
             contextChain, node, condition, typeEnvironment.boolType));
  
positive.code:         if (target.isConst) {
            if (target.isInExternalLibrary && target.initializer == null) {
              // The variable is unavailable due to separate compilation.
              return unevaluated(node, node);
            }
            return runInsideContext(target, () {
              return _evaluateSubexpression(target.initializer);
  
negative.code:     if (left is UnevaluatedConstant) {
        return unevaluated(
            node,
            new LogicalExpression(unique(left.expression), node.operator,
                cloner.clone(node.right)));
      }
      switch (node.operator) {
        case '||':
  