anchor.diff:      var result = <VariableMirror>[];
       parseCompactFieldSpecification(
           this, _compactFieldSpecification, true, result);
  -    _cachedFields = result;
  -    return _cachedFields;
  +    return _cachedFields = result;
     }
   
     Map<Symbol, MethodMirror> get functions {
  -    var result = new Map<Symbol, MethodMirror>();
  +    if (_cachedFunctions != null) return _cachedFunctions;
  +    var result = new Map();
       for (JsMethodMirror mirror in _functionMirrors) {
         if (!mirror.isConstructor) result[mirror.simpleName] = mirror;
       }
  -    return result;
  +    return _cachedFunctions =
  +        new UnmodifiableMapView<Symbol, MethodMirror>(result);
     }
   
     Map<Symbol, MethodMirror> get getters {
  -    var result = new Map<Symbol, MethodMirror>();
  +    if (_cachedGetters != null) return _cachedGetters;
  +    var result = new Map();
       // TODO(ahe): Implement this.
  -    return result;
  +    return _cachedGetters =
  +        new UnmodifiableMapView<Symbol, MethodMirror>(result);
     }
   
     Map<Symbol, MethodMirror> get setters {
  -    var result = new Map<Symbol, MethodMirror>();
  +    if (_cachedSetters != null) return _cachedSetters;
  +    var result = new Map();
       // TODO(ahe): Implement this.
  -    return result;
  +    return _cachedSetters =
  +        new UnmodifiableMapView<Symbol, MethodMirror>(result);
     }
   
     Map<Symbol, VariableMirror> get variables {
  -    var result = new Map<Symbol, VariableMirror>();
  +    if (_cachedVariables != null) return _cachedVariables;
  +    var result = new Map();
       for (JsVariableMirror mirror in _fields) {
         result[mirror.simpleName] = mirror;
       }
  -    return result;
  +    return _cachedVariables =
  +        new UnmodifiableMapView<Symbol, VariableMirror>(result);
     }
   
     Map<Symbol, Mirror> get members {
  -    Map<Symbol, Mirror> result = new Map<Symbol, Mirror>.from(classes);
  +    if (_cachedMembers !=  null) return _cachedMembers;
  +    Map<Symbol, Mirror> result = new Map.from(classes);
       addToResult(Symbol key, Mirror value) {
         result[key] = value;
       }
  
positive.code:   List<JsMethodMirror> get _methods => _functionMirrors;
  
    Map<Symbol, ClassMirror> get classes {
      var result = new Map<Symbol, ClassMirror>();
      for (String className in _classes) {
        JsClassMirror cls = reflectClassByMangledName(className);
        result[cls.simpleName] = cls;
        cls._owner = this;
      }
      return result;
    }
  
    InstanceMirror setField(Symbol fieldName, Object arg) {
  
negative.code:   }
  
    Map<Symbol, MethodMirror> get constructors {
      if (_cachedConstructors != null) return _cachedConstructors;
      var result = new Map();
      for (JsMethodMirror method in _methods) {
        if (method.isConstructor) {
          result[method.simpleName] = method;
        }
      }
      return _cachedConstructors =
          new UnmodifiableMapView<Symbol, MethodMirror>(result);
    }
  
    List<JsMethodMirror> get _methods {
  