### Question:
WildcardPropertiesDescription extends BaseDetachedPropertiesDescription { @Override public boolean isMoreGeneralThan(PropertiesDescription other) { if (predicates.isEmpty()) { return true; } for (String key : getKeys()) { if (!get(key).isMoreGeneralThan(other.get(key))) { return false; } } return true; } WildcardPropertiesDescription(Entity entity);  WildcardPropertiesDescription(Map<String, Predicate> predicates); @Override boolean isMoreGeneralThan(PropertiesDescription other);  }### Answer:
@Test public void shouldCorrectlyJudgeMoreGeneral() { assertTrue(wildcard().isMoreGeneralThan(wildcard())); assertTrue(wildcard().isMoreGeneralThan(literal())); assertTrue(wildcard().isMoreGeneralThan(lazy())); assertTrue(wildcard().isMoreGeneralThan(literal("two", equalTo(2), "three", equalTo("3"), "array", equalTo(new int[]{4, 5})))); assertFalse(wildcard().isMoreGeneralThan(literal("two", equalTo(2), "three", equalTo("4"), "array", equalTo(new int[]{4, 5})))); assertTrue(wildcard().with("three", any()).isMoreGeneralThan(literal("two", equalTo(2), "three", equalTo("4"), "array", equalTo(new int[]{4, 5})))); assertFalse(wildcard().isMoreGeneralThan(literal("two", equalTo(2), "three", equalTo("3")))); assertFalse(wildcard().isMoreGeneralThan(wildcard("two", equalTo(2), "three", equalTo("3")))); assertTrue(wildcard().isMoreGeneralThan(literal("two", equalTo(2), "three", equalTo("3"), "array", equalTo(new int[]{4, 5}), "four", equalTo(4)))); }