### Question:
Combination extends TreeMap<String,String> implements Comparable<Combination> { @Override public String put(String key, String value) { throw new UnsupportedOperationException(); } Combination(AxisList axisList, List<String> values);  Combination(AxisList axisList,String... values);  Combination(Map<String,String> keyValuePairs); String get(Axis a); int toIndex(AxisList axis); boolean evalGroovyExpression(AxisList axes, String expression); int compareTo(Combination that); String toString(Collection<Axis> subset); List<String> values(Collection<? extends Axis> axes); String toString(char sep1, char sep2); String toString(char sep1, char sep2, boolean encodeValue); @Override String toString(); String digest(); static Combination fromString(String id); String toCompactString(AxisList axes); @Override void clear(); @Override void putAll(Map<? extends String, ? extends String> map); @Override String put(String key, String value); @Override String remove(Object key);  }### Answer:
@Test @SuppressWarnings({"RedundantStringConstructorCall"}) public void testEval() { Map<String,String> r = new HashMap<String, String>(); r.put("a","X"); r.put("b",new String("Y")); Combination c = new Combination(r); r.put("a","x"); Combination d = new Combination(r); assertTrue(eval(c, null)); assertTrue(eval(c," ")); assertTrue(eval(c,"true")); assertTrue(eval(c,"a=='X'")); assertTrue(eval(c,"b=='Y'")); assertTrue(eval(c,"(a=='something').implies(b=='other')")); assertTrue(eval(c,"index%2==0")^eval(d,"index%2==0")); assertTrue(eval(c,"index%2==1")^eval(d,"index%2==1")); }