anchor.diff:      }
     }
   
  -  randomChangeCollection = (dynamic coll, {allowList: false}) {
  -    var probAdd = (){
  -      if(coll.length<5) return 1;
  -      if(coll.length>15)return 0;
  -      return rng.nextDouble();
  -    };
  -
  -
  -      if (!prob(coll.length/10)) {
  -        // add
  -          logger.finer('before add \n $coll');
  -          if (prob(0.5) || !allowList) {
  -            coll.add(new DataMap.from({}));
  -          } else {
  -            coll.add([]);
  -          }
  -          logger.finer('after add');
  -          return true;
  -      } else
  -      if(!prob(PROB_CHANGE)){
  -        // remove
  -          if (coll.length == 0) return false;
  -          logger.finer('before remo \n $coll');
  -          coll.remove(randomChoice(coll));
  -          logger.finer('before remo');
  -          return true;
  -      }
  +  randomChangeCollection = (Iterable coll, {topLevel: true}) {
  +    var probMap = topLevel?1:0.5;
  +    var probChange = topLevel?PROB_TOP_CHANGE:PROB_NESTED_CHANGE;
  +    var maxLength = topLevel?10:2;
  +    var probElem = 0.3;
  +
  +    if (!prob(coll.length/maxLength)) {
  +      // add
  +        logger.finer('before add \n $coll');
  +        if (prob(probMap)) {
  +          coll.add(new DataMap.from({}));
  +        } else
  +        if (prob(probElem)){
  +          coll.add(randomChoice(allValues));
  +        } else {
  +          coll.add([]);
  +        }
  +        logger.finer('after add');
  +        return true;
  +    } else
  +    if(!prob(probChange)){
  +      // remove
  +        if (coll.length == 0) return false;
  +        logger.finer('before remo \n $coll');
  +        coll.remove(randomChoice(coll));
  +        logger.finer('before remo');
  +        return true;
  +    }
       else {
         // change
         if (coll.length == 0) return false;
  
positive.code:         print('$i (${watchAverage.round()} ms per modif)');
          action();
  
  //        print(receiver);
          bool end = false;
          return Future.forEach(times, (time){
            bool checkGetData = prob(0.1);
  
negative.code:       logger.finer('before change \n $coll');
        if (data is Map) {
          randomChangeMap(data);
        } else
        if (data is List) {
          randomChangeCollection(data, topLevel: false);
        } else {
          //pass
        }
        logger.finer('after change: $data');
        return true;
  