@Override
 public boolean accept(RomanNumber input) {
   if (previousNumber == null) {
     previousNumber = input;
     subtracted = false;
     return true;
   }
   if (!subtracted && previousNumber.getValue() >= input.getValue()) {
     previousNumber = input;
     subtracted = false;
     return true;
   }
   if (!subtracted && previousNumber.getValue() < input.getValue()) {
     if (SUBTRACTABLE.get(previousNumber).contains(input)) {
       previousNumber = input;
       subtracted = true;
       return true;
     } else {
       previousNumber = input;
       subtracted = false;
       return false;
     }
   }
   if (subtracted && previousNumber.getValue() > input.getValue()) {
     previousNumber = input;
     subtracted = false;
     return true;
   }
   if (subtracted && previousNumber.getValue() <= input.getValue()) {
     previousNumber = input;
     subtracted = true;
     return false;
   }
   return false;
 }