anchor.diff:              replaceSubtree(node, invoke);
               push(invoke);
               return true;
  +          }
  +          break;
  +      }
  +    } else if (node.target.library.isDartCore) {
  +      switch(node.target.name) {
  +        case CorelibMethod.Identical:
  +          if (node.arguments.length == 2) {
  +            return replaceWithBinary(BuiltinOperator.Identical, arg(0), arg(1));
             }
             break;
         }
  
positive.code:   static const String Stringify = 'S';
  }
  
  /// Suggested name for a synthesized loop index.
  class LoopIndexEntity extends Entity {
    String get name => 'i';
  
negative.code:     Continuation cont = node.continuation.definition;
      Primitive arg(int n) => node.arguments[n].definition;
      AbstractValue argType(int n) => getValue(arg(n));
  
      bool replaceWithBinary(BuiltinOperator operator,
                             Primitive left,
                             Primitive right) {
        Primitive prim =
            new ApplyBuiltinOperator(operator, <Primitive>[left, right],
                                     node.sourceInformation);
        LetPrim let = makeLetPrimInvoke(prim, cont);
        replaceSubtree(node, let);
        push(let);
        return true; // So returning early is more convenient.
      }
  
      if (node.target.library.isInternalLibrary) {
        switch(node.target.name) {
          case InternalMethod.Stringify:
  