public static <GItem, GItem2> Comparator<GItem> navigatedComparator(final Converter<? super GItem, ? extends GItem2> converter,
		final Comparator<? super GItem2> comparator) throws NullPointerException {
		if (converter == null) throw new NullPointerException("converter = null");
		if (comparator == null) throw new NullPointerException("comparator = null");
		return new Comparator<GItem>() {

			@Override
			public int compare(final GItem item1, final GItem item2) {
				return comparator.compare(converter.convert(item1), converter.convert(item2));
			}

			@Override
			public String toString() {
				return Objects.toInvokeString("navigatedComparator", converter, comparator);
			}

		};
	}