anchor.diff:  
     bool call(Mob attacker) {
       if (attacker.stats.critChance == 0.0) return false;
  -    return randomForChamp[attacker.id].nextDouble() < attacker.stats.critChance;
  +    Random random = randomForChamp[attacker.id];
  +    if (random == null) _log.warning('${attacker.id} has no crit source.');
  +    return random.nextDouble() < attacker.stats.critChance;
     }
   }
   
  
positive.code:   }
  
    void lifestealFrom(double damage) {
      healFor(damage * stats.lifesteal);
    }
  
    void healFor(double healing) {
      // FIXME: Missing healing modifiers.
      hpLost -= min(hpLost, healing);
    }
  
negative.code:     return null;
    }
  
    Mob.fromJSON(Map<String, dynamic> json, this.type)
        : baseStats = new BaseStats.fromJSON(json['stats']) {
      id = json['id'];
      name = json['name'];
      title = json['title'];
      ChampionEffectsConstructor effectsConstructor =
          championEffectsConstructors[id];
      if (effectsConstructor != null) effects = effectsConstructor(this);
  