public static CompositeEvictionChecker newCompositeEvictionChecker(CompositionOperator compositionOperator,
                                                                       EvictionChecker... evictionCheckers) {
        Preconditions.isNotNull(compositionOperator, "composition");
        Preconditions.isNotNull(evictionCheckers, "evictionCheckers");
        if (evictionCheckers.length == 0) {
            throw new IllegalArgumentException("EvictionCheckers cannot be empty!");
        }
        switch (compositionOperator) {
            case AND:
                return new CompositeEvictionCheckerWithAndComposition(evictionCheckers);
            case OR:
                return new CompositeEvictionCheckerWithOrComposition(evictionCheckers);
            default:
                throw new IllegalArgumentException("Invalid composition operator: " + compositionOperator);
        }
    }
@Test(expected = IllegalArgumentException.class)
    public void compositionOperatorCannotBeNull() {
        CompositeEvictionChecker.newCompositeEvictionChecker(
                null,
                mock(EvictionChecker.class),
                mock(EvictionChecker.class));
    }