public interface Specification {
  boolean isSatisfiedBy(Object candidate);
  Specification and(Specification other);
  boolean subsumes(Specification other);
}
