anchor.diff:  
     /// Process nodes right-to-left, the opposite of evaluation order in the case
     /// of argument lists..
  -  void _rewriteList(List<Node> nodes) {
  +  void _rewriteList(List<Node> nodes, {bool rhsPropagation: true}) {
  +    allowRhsPropagation.add(rhsPropagation);
       for (int i = nodes.length - 1; i >= 0; --i) {
         nodes[i] = visitExpression(nodes[i]);
       }
  +    allowRhsPropagation.removeLast();
     }
   
     Expression visitInvokeStatic(InvokeStatic node) {
  
positive.code:   }
  
    Expression visitConstant(Constant node) {
      if (!environment.isEmpty) {
        Constant constant = getRightHandConstant(environment.last);
        if (constant != null && constant.value == node.value) {
          return visitExpression(environment.removeLast());
  
negative.code:   /// is not safe if the code would be moved inside the scope of an exception
    /// handler (i.e., if the code would be moved into a try from outside it).
    Set<Label> safeForInlining = new Set<Label>();
  
    /// If the top element is true, assignments of form "x = CONST" may be
    /// propagated into a following occurence of CONST.  This may confuse the JS
    /// engine so it is disabled in some cases.
    final List<bool> allowRhsPropagation = <bool>[true];
  
    bool get isRhsPropagationAllowed => allowRhsPropagation.last;
  
    /// Returns the redirect target of [jump] or [jump] itself if it should not
    /// be redirected.
  