anchor.diff:  Map<String, Object> classToClassMap(ClassMirror cm, TypeMirror from) {
     // 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;
  +  }
  +
     map[keyMetatype] = metatypeClass;
     map[keyName] = "C_" + MirrorSystem.getName(cm.simpleName);
   
  
positive.code:   if (!typeParameters.isEmpty) {
      map[keyTypeParams] = typeParameters;
    }
  
    List<ClassMirror> interfaces = [cm.superclass];
    interfaces.addAll(cm.superinterfaces);
    map[keySatisfies] = interfaces
      .where((t) {
        return t != reflectClass(Object);
      })
      .map((m) => typeToMap(m, from)).toList();
  
  
negative.code: Map<String, Object> typeToMap(
      TypeMirror tm, TypeMirror from, [bool isClass = false, bool erase = true]) {
  
    // FIXME tm is null sometimes
  
    if (tm == reflectClass(Object)
        // For now, use Anything for modules we can't import until cyclic
        // dependencies work
        || (tm is ClassMirror && !allowedLibraries.contains(tm.owner))
        || (null != tm && tm.isPrivate)) {
      return {
          keyModule : "\$",
          keyPackage : "\$",
  