anchor.diff:  import 'types.dart';
   import 'util.dart';
   import 'dart:collection';
  +import 'dart:io';
   
   class ConstraintAnalysis {
     TypeMap typeMap;
  
positive.code:   }
    
    void _subsetConstraint(TypeIdentifier a, TypeIdentifier b) {
      if (a != b)
        foreach(a).update((AbstractType type) => types.put(b, type));
    }
  
negative.code:   List<AbstractType> get types => new List.from(_types); 
    
    Function onChange(NotifyFunc func) {
      
      /*
       *  TODO 
       *  This condition is never met, because dart basicly uses pointer comparison for function equality,
       *  so two calls with the syntacticly same lambda wont be considered equals.
       *
       * if (_event_listeners.contains(func)) {
       *   return (() => this.remove(func));
       * }
       */
      
      _event_listeners.add(func);
      
  