anchor.diff:        for (final member in type.members.getValues()) {
           if (!diff.domToHtml.containsKey(member)) {
             if (member is PropertyMember) {
  -            if (member.canGet) removed.add(htmlishMemberName(member.getter));
  -            if (member.canSet) removed.add(htmlishMemberName(member.setter));
  +            if (member.canGet) removed.add(htmlishMemberDesc(member.getter));
  +            if (member.canSet) removed.add(htmlishMemberDesc(member.setter));
             } else {
  -            removed.add(htmlishMemberName(member));
  +            removed.add(htmlishMemberDesc(member));
             }
           } else if (member is PropertyMember) {
             final htmlMembers = diff.domToHtml[member];
             if (member.canGet && !htmlMembers.some((m) => m.name.startsWith('get:'))) {
  -            removed.add(htmlishMemberName(member.getter));
  +            removed.add(htmlishMemberDesc(member.getter));
             }
             if (member.canSet && !htmlMembers.some((m) => m.name.startsWith('set:'))) {
  -            removed.add(htmlishMemberName(member.setter));
  +            removed.add(htmlishMemberDesc(member.setter));
             }
           }
         }
  
positive.code:   final htmlMember = htmlMembers.iterator().next();
    if (memberName(domMember) != memberName(htmlMember) &&
      sameType(domMember.returnType, htmlMember.returnType)) {
      renamed[memberName(domMember)] = memberName(htmlMember);
    }
  }
  
  
negative.code:   return htmlTypes != null && htmlTypes.some((t) => t == htmlType);
  }
  
  /** Returns the name of a member, including `get:` if it's a field. */
  String memberName(Member m) => m is FieldMember ? 'get:${m.name}' : m.name;
  
  /**
   * Returns a string describing the name of a member. If [type] is passed, it's
   * used in place of the member's real type name.
   */
  String memberDesc(Member m, [Type type = null]) {
    if (type == null) type = m.declaringType;
    return '${type.name}.${memberName(m)}';
  }
  
  /**
   * Same as [memberDesc], but if [m] is a `dart:dom` type its `dart:html`
   * typename is used instead.
   */
  String htmlishMemberDesc(Member m) {
    var type = m.declaringType;
    final htmlTypes = diff.domTypesToHtml[type];
    if (htmlTypes != null && htmlTypes.length == 1) {
      type = htmlTypes.iterator().next();
    }
    return memberDesc(m, type);
  }
  
  bool isGetter(Member member) => member.name.startsWith('get:');
  