anchor.diff:      var body =
           _finishClassMembers(classElem, classExpr, ctors, fields, staticFields);
   
  +    var result = _finishClassDef(type, body);
  +
       var jsPeer = getAnnotationValue(node, _isJsPeerInterface);
  -    String jsPeerName = null;
       if (jsPeer != null) {
  -      jsPeerName = getConstantField(jsPeer, 'name', types.stringType);
  -    }
  -
  -    return _finishClassDef(type, body, jsPeerName);
  +      var jsPeerName = getConstantField(jsPeer, 'name', types.stringType);
  +      if (jsPeerName != null) {
  +        // This class isn't allowed to be lazy, because we need to set up
  +        // the native JS type eagerly at this point.
  +        // If we wanted to support laziness, we could defer the hookup until
  +        // the end of the Dart library cycle load.
  +        assert(!_lazyClass(type));
  +
  +        // TODO(jmesserly): this copies the dynamic members.
  +        // Probably fine for objects coming from JS, but not if we actually
  +        // want to support construction of instances with generic types other
  +        // than dynamic. See issue #154 for Array and List<E> related bug.
  +        var copyMembers = js.statement(
  +            'dart.copyProperties(dart.global.#.prototype, #.prototype);', [
  +          _propertyName(jsPeerName),
  +          classElem.name
  +        ]);
  +        return _statement([result, copyMembers]);
  +      }
  +    }
  +    return result;
     }
   
     @override
  
positive.code:       _emitClassIfNeeded(classDefs, types.functionType);
      }
      classDefs.add(body);
      if (jsPeerName != null) {
        classDefs.add(js.statement(
            'dart.copyProperties(dart.global.#.prototype, #.prototype);', [
          _propertyName(jsPeerName),
          name
        ]));
      }
      return _statement(classDefs);
    }
  
  
negative.code:     var classDecl = new JS.ClassDeclaration(
          new JS.ClassExpression(new JS.Identifier(name), heritage, []));
  
      return _finishClassDef(type, classDecl);
    }
  
    JS.Statement _emitJsType(String dartClassName, DartObjectImpl jsName) {
  