@Override
    public final String toString() {
        StringBuilder out = new StringBuilder();
        appendTo(out);
        return out.toString();
    }
@Test
    void requireThatPredicatesCanBeBuiltUsingSeparateMethodCalls() {
        Conjunction conjunction = new Conjunction();
        FeatureSet countrySet = new FeatureSet("country");
        countrySet.addValue("no");
        countrySet.addValue("se");
        conjunction.addOperand(countrySet);
        FeatureRange ageRange = new FeatureRange("age");
        ageRange.setFromInclusive(20L);
        conjunction.addOperand(ageRange);
        FeatureRange heightRange = new FeatureRange("height");
        heightRange.setToInclusive(160L);
        conjunction.addOperand(heightRange);
        assertEquals("country in [no, se] and age in [20..] and height in [..160]",
                conjunction.toString());
    }