anchor.diff:  
   }
   
  +/*
  + *  num: 67m
  + *  Map: 6m (empty)
  + *  HashMap: 7m (empty)
  + *  SplayTreeMap: 4m (empty)
  + *  List: 9m (empty)
  + *  StreamController.broadcast: 11m (sync nezalezi)
  + *  StreamController 16m (sync nezalezi)
  + *  TimerEvent: 6m
  + *  empry func: 25m
  + *
  + *  DataMap (o mne, after improvment): 427k, 456k, 570k
  + *  DataMap (o mne, before improvment): 123k
  + *  Map (o mne, plain map): 1285k
  + *  Map.toString (o mne): 7065k
  + *
  + *  o mne:
  + *  {'meno': 'Tomas', 'adresa': 'gagarinova 47',
  +      'sex': 'male', 'iq': 'undefined', 'vek': '8',
  +      'rodicia': {'mama': 'ma', 'otec': 'tiez ma'}})
  + *
  + */
  +test4(){
  +  var l=[];
  +  num i=0;
  +  while(true){
  +//    Timer.run((){});
  +//    var ctrl = new StreamController(sync: true);
  +    i++;
  +    if (i%1000 == 0){
  +       print(i/1000);
  +    }
  +    l.add(new Map.from({'meno': 'Tomas', 'adresa': 'gagarinova 47',
  +      'sex': 'male', 'iq': 'undefined', 'vek': '8',
  +      'rodicia': {'mama': 'ma', 'otec': 'tiez ma'}}).toString());
  +  }
  +}
  +
   
   main() {
  -  test3();
  +  test4();
   }
   
   
  
positive.code:     if (level==0) {
        return m['value'] = 'a';
      } else {
        for (int i=0; i<4; i++) {
          var mm = new Map();
          m['$i'] = mm;
          enhance(mm, level - 1);
        }
      }
    }
  //  magicalTick();
    var m = {};
    enhance(m, 8);
    print(m.toString().length);
    var s = new Stopwatch()..start();
    var a = cleanify(m);
  
negative.code: import "package:unittest/unittest.dart";
  import 'package:clean_data/clean_data.dart';
  import "dart:async";
  import 'dart:collection';
  
  magicalTick(){
    new Timer.periodic(const Duration(milliseconds:1000), (t) {
  