/** A filter for the set of available operations. */ private static final class MethodFilter implements Predicate<MathTransformProvider> { /** The expected type ({@code Projection.class}) for projections). */ private final Class<? extends Operation> type; /** Constructs a filter for the set of math operations methods. */ public MethodFilter(final Class<? extends Operation> type) { this.type = type; } /** * Returns {@code true} if the specified element should be included. If the type is unknown, * conservatively returns {@code true}. */ @Override public boolean test(MathTransformProvider element) { if (element instanceof MathTransformProvider) { final Class<? extends Operation> t = ((MathTransformProvider) element).getOperationType(); if (t != null && !type.isAssignableFrom(t)) { return false; } } return true; } }