anchor.diff:  import '../universe/call_structure.dart';
   import '../universe/selector.dart';
   import '../universe/side_effects.dart';
  -import '../util/setlet.dart';
   import '../world.dart';
   import 'builder_kernel.dart';
   import 'closure_tracer.dart';
  
positive.code:     return optimizerHints.assumeDynamic(
          closedWorld.elementEnvironment, commonElements, member);
    }
  
    // Sorts the resolved elements by size. We do this for this inferrer
    // to get the same results for [ListTracer] compared to the
    // [SimpleTypesInferrer].
    static Iterable<MemberEntity> sortMembers(
        Iterable<MemberEntity> members, int computeSize(MemberEntity member)) {
      Map<int, Set<MemberEntity>> methodSizes =
          groupMembers(members, computeSize);
      int max = methodSizes.keys.fold(0, (a, b) => a > b ? a : b);
      List<MemberEntity> result = <MemberEntity>[];
      for (int i = 0; i <= max; i++) {
        Set<MemberEntity> set = methodSizes[i];
        if (set != null) result.addAll(set);
      }
      return result;
    }
  
    static Map<int, Set<MemberEntity>> groupMembers(
        Iterable<MemberEntity> members, int computeSize(MemberEntity member)) {
      Map<int, Set<MemberEntity>> methodSizes = <int, Set<MemberEntity>>{};
      members.forEach((MemberEntity element) {
        // Put the other operators in buckets by size, later to be added in
        // size order.
        int size = computeSize(element);
        Set<MemberEntity> set = methodSizes[size] ??= new Setlet<MemberEntity>();
        set.add(element);
      });
      return methodSizes;
    }
  }
  
  class KernelTypeSystemStrategy implements TypeSystemStrategy {
  
negative.code:       types.withMember(member, () => analyze(member));
      });
      reporter.log('Added $addedInGraph elements in inferencing graph.');
    }
  
    /// Returns the body node for [member].
  