anchor.diff:      map[keyMetatype] = metatypeMethod;
     }
     map[keyName] = MirrorSystem.getName(mm.simpleName);
  -  map[keyPackedAnns] = 5; // TODO 'shared formal' for now
  +
  +  map[keyPackedAnns] = annotationBits["shared"];
  +  if (forceAbstract || mm.isAbstract) {
  +    // FIXME for now, making all members "default" since we're not getting
  +    // reliable info for implemented members for classes like IterableBase
  +    //map[keyPackedAnns] |= annotationBits["formal"];
  +    map[keyPackedAnns] |= annotationBits["default"];
  +  }
  +  else {
  +    map[keyPackedAnns] |= annotationBits["default"];
  +  }
  +
     if (!mm.isGetter) {
       map[keyParams] = [parametersToList(mm.parameters, from)];
     }
  
positive.code:   // class
    var map = new Map<String, Object>();
  
    var methods = methodsToMap(cm.declarations.values, from);
    if (!methods.isEmpty) {
      map[keyMethods] = methods;
    }
  
    var attributes = attributesToMap(cm.declarations.values, from);
    if (!attributes.isEmpty) {
      map[keyAttributes] = attributes;
    }
  
negative.code: }
  
  Map<String, Map<String, Object>> attributesToMap(
      Iterable<DeclarationMirror> declarations, TypeMirror from,
      bool forceAbstract) {
  
    var map = new Map<String, Map<String, Object>>();
    for (var d in declarations) {
      if (d is VariableMirror && !d.isPrivate) {
        // print("-- Variable: " + MirrorSystem.getName(d.simpleName).toString() + " --");
        map[MirrorSystem.getName(d.simpleName)] =
            variableToMap(d, from, forceAbstract);
      }
      else if (d is MethodMirror && d.isGetter) {
        // print("-- Method:   " + MirrorSystem.getName(d.simpleName).toString() + " --");
        map[MirrorSystem.getName(d.simpleName)] =
            methodToMap(d, from, forceAbstract);
      }
    }
    return map;
  