public static <GInput> Filter<GInput> disjunctionFilter(final Filter<? super GInput> filter1, final Filter<? super GInput> filter2)
		throws NullPointerException {
		if (filter1 == null) throw new NullPointerException("filter1 = null");
		if (filter2 == null) throw new NullPointerException("filter2 = null");
		return new Filter<GInput>() {

			@Override
			public boolean accept(final GInput input) {
				return filter1.accept(input) || filter2.accept(input);
			}

			@Override
			public String toString() {
				return Objects.toInvokeString("disjunctionFilter", filter1, filter2);
			}

		};
	}