public static <GInput, GOutput> Converter<GInput, GOutput> conditionalConverter(final Filter<? super GInput> condition,
		final Converter<? super GInput, ? extends GOutput> acceptConverter, final Converter<? super GInput, ? extends GOutput> rejectConverter)
		throws NullPointerException {
		return new Converter<GInput, GOutput>() {

			@Override
			public GOutput convert(final GInput input) {
				if (condition.accept(input)) return acceptConverter.convert(input);
				return rejectConverter.convert(input);
			}

			@Override
			public String toString() {
				return Objects.toInvokeString("conditionalConverter", condition, acceptConverter, rejectConverter);
			}

		};
	}