@Override public Result convert(Source source) { for (Map.Entry<Predicate<Source>, Conversion<Source, Result>> conversionCase : cases) { if (conversionCase.getKey().test(source)) { return conversionCase.getValue().convert(source); } } return defaultConversion.convert(source); }