@Override
  public Integer getNextValue(Integer current, Integer target)
  {
    for (ConditionalRule rule : rules)
    {
      if (rule.isApplicable(current, target))
        return rule.getNextValue(current, target);
    }
    return null;
  }