### Question:
ConstraintsBuilder implements Constraint<T> { public ConstraintsBuilder<T> excludeProperties(String... attributesOrRelationships) { return new ConstraintsBuilder<>(op.andThen(ce -> { ce.excludeProperties(attributesOrRelationships); return ce; })); } protected  ConstraintsBuilder(Function<ConstrainedAgEntity<T>, ConstrainedAgEntity<T>> op); @Override ConstrainedAgEntity<T> apply(AgEntity<T> agEntity); ConstraintsBuilder<T> excludeProperty(String attributeOrRelationship); ConstraintsBuilder<T> excludeProperties(String... attributesOrRelationships); ConstraintsBuilder<T> excludeAllAttributes(); ConstraintsBuilder<T> excludeAllChildren(); ConstraintsBuilder<T> attribute(String attribute); ConstraintsBuilder<T> allAttributes(); ConstraintsBuilder<T> attributes(String... attributes); ConstraintsBuilder<T> includeId(boolean include); ConstraintsBuilder<T> includeId(); ConstraintsBuilder<T> excludeId(); ConstraintsBuilder<T> and(Expression qualifier); ConstraintsBuilder<T> or(Expression qualifier); ConstraintsBuilder<T> path(String path, ConstraintsBuilder<S> subEntityBuilder);  }### Answer:
@Test public void testExcludeProperties() { ConstraintsBuilder<T> tc = Constraint.idAndAttributes(T.class).excludeProperties("b", "d"); ConstrainedAgEntity<T> result = tc.apply(entity); assertNotNull(result); assertEquals(1, result.getAttributes().size()); assertTrue(result.getChildren().isEmpty()); assertTrue(result.isIdIncluded()); }