anchor.diff:    }
   
     List<InstanceMirror> get metadata {
  +    if (_cachedMetadata != null) return _cachedMetadata;
       if (_metadata == null) {
         _metadata = extractMetadata(JS('', '#.prototype', _jsConstructor));
       }
  -    return _metadata.map(reflect).toList();
  +    return _cachedMetadata =
  +        new UnmodifiableListView<InstanceMirror>(_metadata.map(reflect));
     }
   
     ClassMirror get superclass {
  
positive.code:   DeclarationMirror _owner;
    List _metadata;
    var _returnType;
    var _parameters;
  
    JsMethodMirror(Symbol simpleName,
                   this._jsFunction,
  
negative.code:   List<InstanceMirror> get metadata {
      if (_metadata == null) {
        var raw = extractMetadata(_jsFunction);
        var formals = new List(_parameterCount);
        if (!raw.isEmpty) {
          _returnType = raw[0];
          int parameterLength = 1 + _parameterCount * 2;
          int formalsCount = 0;
          for (int i = 1; i < parameterLength; i += 2) {
            var name = raw[i];
            var type = raw[i + 1];
            formals[formalsCount++] = new JsParameterMirror(name, this, type);
          }
          raw = raw.sublist(parameterLength);
        } else {
          for (int i = 0; i < _parameterCount; i++) {
            formals[i] = new JsParameterMirror('argument$i', this, null);
          }
        }
        _parameters = new UnmodifiableListView<ParameterMirror>(formals);
        _metadata = new UnmodifiableListView(raw.map(reflect));
      }
      return _metadata;
    }
  
    Symbol get constructorName {
  