anchor.diff:        addSelfDispatch(node.name, setter: true);
       } else {
         shaker._addDispatchedName(getStaticType(node.receiver), node.name);
  -      if (node.interfaceTarget != null) {
  -        shaker._typedCalls.add(node);
  -      }
  +    }
  +    if (node.interfaceTarget != null) {
  +      shaker._addUsedInterfaceMember(node.interfaceTarget);
  +      shaker._typedCalls.add(node);
       }
       node.visitChildren(this);
     }
  
positive.code: 
    Member defaultMember(Member node) {
      if (!shaker.isMemberBodyUsed(node)) {
        if (!shaker.isMemberOverridden(node)) {
          node.canonicalName?.unbind();
          return null;
        }
  
negative.code: 
  Program transformProgram(
      CoreTypes coreTypes, ClassHierarchy hierarchy, Program program,
      {List<ProgramRoot> programRoots, bool strongMode: false}) {
    new TreeShaker(coreTypes, hierarchy, program,
            programRoots: programRoots, strongMode: strongMode)
        .transform(program);
    return program;
  }
  