Index: trunk/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java
===================================================================
--- trunk/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java	(revision 10834)
+++ trunk/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java	(revision 10837)
@@ -6,5 +6,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.PerformanceTestUtils;
-import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op;
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.Op;
 
 /**
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java	(revision 10834)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java	(revision 10837)
@@ -13,7 +13,7 @@
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Context;
-import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op;
-import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondition;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.ToTagConvertable;
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.Op;
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.SimpleKeyValueCondition;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -54,5 +54,5 @@
     @Test
     public void testKeyValueEq() {
-        Condition op = Condition.createKeyValueCondition("k1", "v1", Op.EQ, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("k1", "v1", Op.EQ, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -72,5 +72,5 @@
     @Test
     public void testKeyValueEqAsKey() {
-        Condition op = Condition.createKeyValueCondition("k1", "k2", Op.EQ, Context.PRIMITIVE, true);
+        Condition op = ConditionFactory.createKeyValueCondition("k1", "k2", Op.EQ, Context.PRIMITIVE, true);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -88,5 +88,5 @@
     @Test
     public void testKeyValueNeq() {
-        Condition op = Condition.createKeyValueCondition("k1", "v1", Op.NEQ, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("k1", "v1", Op.NEQ, Context.PRIMITIVE, false);
         assertTrue(op.applies(genEnv(node0)));
         assertFalse(op.applies(genEnv(node1)));
@@ -101,5 +101,5 @@
     @Test
     public void testKeyValueGreatherEq() {
-        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.GREATER_OR_EQUAL, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.GREATER_OR_EQUAL, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -114,5 +114,5 @@
     @Test
     public void testKeyValueGreather() {
-        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.GREATER, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.GREATER, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertFalse(op.applies(genEnv(node1)));
@@ -127,5 +127,5 @@
     @Test
     public void testKeyValueLessEq() {
-        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.LESS_OR_EQUAL, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.LESS_OR_EQUAL, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -140,5 +140,5 @@
     @Test
     public void testKeyValueLess() {
-        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.LESS, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.LESS, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertFalse(op.applies(genEnv(node1)));
@@ -153,5 +153,5 @@
     @Test
     public void testKeyValueRegex() {
-        Condition op = Condition.createKeyValueCondition("r1", "(ab){2}", Op.REGEX, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("r1", "(ab){2}", Op.REGEX, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -166,5 +166,5 @@
     @Test
     public void testKeyValueNregex() {
-        Condition op = Condition.createKeyValueCondition("r1", "(ab){2}", Op.NREGEX, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("r1", "(ab){2}", Op.NREGEX, Context.PRIMITIVE, false);
         assertTrue(op.applies(genEnv(node0)));
         assertFalse(op.applies(genEnv(node1)));
@@ -179,5 +179,5 @@
     @Test
     public void testKeyValueOneOf() {
-        Condition op = Condition.createKeyValueCondition("one", "a", Op.ONE_OF, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("one", "a", Op.ONE_OF, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -192,5 +192,5 @@
     @Test
     public void testKeyValueBeginsWith() {
-        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.BEGINS_WITH, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.BEGINS_WITH, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertTrue(op.applies(genEnv(node1)));
@@ -205,5 +205,5 @@
     @Test
     public void testKeyValueEndsWith() {
-        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.ENDS_WITH, Context.PRIMITIVE, false);
+        Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.ENDS_WITH, Context.PRIMITIVE, false);
         assertFalse(op.applies(genEnv(node0)));
         assertFalse(op.applies(genEnv(node1)));
@@ -218,25 +218,25 @@
     @Test
     public void testKeyValueContains() {
-        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.CONTAINS, Context.PRIMITIVE, false);
-        assertFalse(op.applies(genEnv(node0)));
-        assertTrue(op.applies(genEnv(node1)));
-        assertTrue(op.applies(genEnv(node2)));
-        assertTrue(op.applies(genEnv(node3)));
-        assertTrue(op.applies(genEnv(node4)));
-    }
-
-    /**
-     * Test of {@link Condition#createRegexpKeyRegexpValueCondition(String, String, Op)}
+        Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.CONTAINS, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test of {@link ConditionFactory#createRegexpKeyRegexpValueCondition(String, String, Op)}
      */
     @Test
     public void testRegexpKeyValueRegexpCondition() {
-        Condition op = Condition.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.REGEX);
-        assertFalse(op.applies(genEnv(node0)));
-        assertFalse(op.applies(genEnv(node1)));
-        assertTrue(op.applies(genEnv(node2)));
-        assertFalse(op.applies(genEnv(node3)));
-        assertTrue(op.applies(genEnv(node4)));
-
-        Condition notOp = Condition.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.NREGEX);
+        Condition op = ConditionFactory.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.REGEX);
+        assertFalse(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+
+        Condition notOp = ConditionFactory.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.NREGEX);
         assertTrue(notOp.applies(genEnv(node0)));
         assertTrue(notOp.applies(genEnv(node1)));
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy	(revision 10834)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyConditionTest.groovy	(revision 10837)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.gui.mappaint.Environment
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Context
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.KeyMatchType
 
 class KeyConditionTest {
@@ -47,25 +48,25 @@
 
         // ["a label"]
-        Condition c = Condition.createKeyCondition("a key", false, Condition.KeyMatchType.FALSE, Context.PRIMITIVE)
+        Condition c = ConditionFactory.createKeyCondition("a key", false, KeyMatchType.FALSE, Context.PRIMITIVE)
         // ["a label"?]
-        c = Condition.createKeyCondition("a key", false, Condition.KeyMatchType.TRUE, Context.PRIMITIVE)
+        c = ConditionFactory.createKeyCondition("a key", false, KeyMatchType.TRUE, Context.PRIMITIVE)
         // [!"a label"]
-        c = Condition.createKeyCondition("a key", true, Condition.KeyMatchType.FALSE, Context.PRIMITIVE)
+        c = ConditionFactory.createKeyCondition("a key", true, KeyMatchType.FALSE, Context.PRIMITIVE)
         // [!"a label"?]
-        c = Condition.createKeyCondition("a key", true, Condition.KeyMatchType.TRUE, Context.PRIMITIVE)
+        c = ConditionFactory.createKeyCondition("a key", true, KeyMatchType.TRUE, Context.PRIMITIVE)
 
         // ["a label"]
-        c = Condition.createKeyCondition("a key", false, null, Context.LINK)
+        c = ConditionFactory.createKeyCondition("a key", false, null, Context.LINK)
         // [!"a label"]
-        c = Condition.createKeyCondition("a key", true, null, Context.LINK)
+        c = ConditionFactory.createKeyCondition("a key", true, null, Context.LINK)
 
         shouldFail(MapCSSException) {
             // ["a label"?]
-           c = Condition.createKeyCondition("a key", false, Condition.KeyMatchType.TRUE, Context.LINK)
+           c = ConditionFactory.createKeyCondition("a key", false, KeyMatchType.TRUE, Context.LINK)
         }
 
         shouldFail(MapCSSException) {
             // [!"a label"?]
-            c = Condition.createKeyCondition("a key", true, Condition.KeyMatchType.TRUE, Context.LINK)
+            c = ConditionFactory.createKeyCondition("a key", true, KeyMatchType.TRUE, Context.LINK)
         }
     }
@@ -79,8 +80,8 @@
         Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
-        Condition cond = Condition.createKeyCondition("my_role", false, null, Context.LINK)
+        Condition cond = ConditionFactory.createKeyCondition("my_role", false, null, Context.LINK)
         assert cond.applies(e)
 
-        cond = Condition.createKeyCondition("my_role", true, null, Context.LINK)
+        cond = ConditionFactory.createKeyCondition("my_role", true, null, Context.LINK)
         assert !cond.applies(e)
     }
@@ -94,8 +95,8 @@
         Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
-        Condition cond = Condition.createKeyCondition("another_role", false, null, Context.LINK)
+        Condition cond = ConditionFactory.createKeyCondition("another_role", false, null, Context.LINK)
         assert !cond.applies(e)
 
-        cond = Condition.createKeyCondition("another_role", true, null, Context.LINK)
+        cond = ConditionFactory.createKeyCondition("another_role", true, null, Context.LINK)
         assert cond.applies(e)
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy	(revision 10834)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy	(revision 10837)
@@ -12,5 +12,5 @@
 import org.openstreetmap.josm.gui.mappaint.Environment
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Context
-import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.Op
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
 
@@ -47,11 +47,11 @@
     @Test
     public void create() {
-        Condition c = Condition.createKeyValueCondition("a key", "a value", Op.EQ, Context.PRIMITIVE, false)
+        Condition c = ConditionFactory.createKeyValueCondition("a key", "a value", Op.EQ, Context.PRIMITIVE, false)
 
-        c = Condition.createKeyValueCondition("role", "a role", Op.EQ, Context.LINK, false)
-        c = Condition.createKeyValueCondition("RoLe", "a role", Op.EQ, Context.LINK, false)
+        c = ConditionFactory.createKeyValueCondition("role", "a role", Op.EQ, Context.LINK, false)
+        c = ConditionFactory.createKeyValueCondition("RoLe", "a role", Op.EQ, Context.LINK, false)
 
         shouldFail(MapCSSException) {
-            c = Condition.createKeyValueCondition("an arbitry tag", "a role", Op.EQ, Context.LINK, false)
+            c = ConditionFactory.createKeyValueCondition("an arbitry tag", "a role", Op.EQ, Context.LINK, false)
         }
     }
@@ -65,8 +65,8 @@
         Environment e = new Environment(n).withParent(r).withLinkContext().withIndex(0, r.membersCount)
 
-        Condition cond = new Condition.RoleCondition("my_role", Op.EQ)
+        Condition cond = new ConditionFactory.RoleCondition("my_role", Op.EQ)
         assert cond.applies(e)
 
-        cond = new Condition.RoleCondition("another_role", Op.EQ)
+        cond = new ConditionFactory.RoleCondition("another_role", Op.EQ)
         assert !cond.applies(e)
     }
@@ -80,8 +80,8 @@
         Environment e = new Environment(n).withParent(r).withIndex(0, r.membersCount).withLinkContext()
 
-        Condition cond = Condition.createKeyValueCondition("role", "my_role", Op.NEQ, Context.LINK, false)
+        Condition cond = ConditionFactory.createKeyValueCondition("role", "my_role", Op.NEQ, Context.LINK, false)
         assert !cond.applies(e)
 
-        cond = Condition.createKeyValueCondition("role", "another_role", Op.NEQ, Context.LINK, false)
+        cond = ConditionFactory.createKeyValueCondition("role", "another_role", Op.NEQ, Context.LINK, false)
         assert cond.applies(e)
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 10834)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 10837)
@@ -14,4 +14,11 @@
 import org.openstreetmap.josm.gui.mappaint.Environment
 import org.openstreetmap.josm.gui.mappaint.MultiCascade
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.ClassCondition
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.KeyCondition
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.KeyMatchType
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.KeyValueCondition
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.Op
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.PseudoClassCondition
+import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.SimpleKeyValueCondition
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
 import org.openstreetmap.josm.tools.ColorHelper
@@ -50,8 +57,8 @@
     public void testClassCondition() throws Exception {
         def conditions = ((Selector.GeneralSelector) getParser("way[name=X].highway:closed").selector()).conds
-        assert conditions.get(0) instanceof Condition.SimpleKeyValueCondition
+        assert conditions.get(0) instanceof SimpleKeyValueCondition
         assert conditions.get(0).applies(getEnvironment("name", "X"))
-        assert conditions.get(1) instanceof Condition.ClassCondition
-        assert conditions.get(2) instanceof Condition.PseudoClassCondition
+        assert conditions.get(1) instanceof ClassCondition
+        assert conditions.get(2) instanceof PseudoClassCondition
         assert !conditions.get(2).applies(getEnvironment("name", "X"))
     }
@@ -93,6 +100,6 @@
     @Test
     public void testEqualCondition() throws Exception {
-        def condition = (Condition.SimpleKeyValueCondition) getParser("[surface=paved]").condition(Condition.Context.PRIMITIVE)
-        assert condition instanceof Condition.SimpleKeyValueCondition
+        def condition = (SimpleKeyValueCondition) getParser("[surface=paved]").condition(Condition.Context.PRIMITIVE)
+        assert condition instanceof SimpleKeyValueCondition
         assert "surface".equals(condition.k)
         assert "paved".equals(condition.v)
@@ -103,6 +110,6 @@
     @Test
     public void testNotEqualCondition() throws Exception {
-        def condition = (Condition.KeyValueCondition) getParser("[surface!=paved]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.Op.NEQ.equals(condition.op)
+        def condition = (KeyValueCondition) getParser("[surface!=paved]").condition(Condition.Context.PRIMITIVE)
+        assert Op.NEQ.equals(condition.op)
         assert !condition.applies(getEnvironment("surface", "paved"))
         assert condition.applies(getEnvironment("surface", "unpaved"))
@@ -111,6 +118,6 @@
     @Test
     public void testRegexCondition() throws Exception {
-        def condition = (Condition.KeyValueCondition) getParser("[surface=~/paved|unpaved/]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.Op.REGEX.equals(condition.op)
+        def condition = (KeyValueCondition) getParser("[surface=~/paved|unpaved/]").condition(Condition.Context.PRIMITIVE)
+        assert Op.REGEX.equals(condition.op)
         assert condition.applies(getEnvironment("surface", "unpaved"))
         assert !condition.applies(getEnvironment("surface", "grass"))
@@ -119,5 +126,5 @@
     @Test
     public void testRegexConditionParenthesis() throws Exception {
-        def condition = (Condition.KeyValueCondition) getParser("[name =~ /^\\(foo\\)/]").condition(Condition.Context.PRIMITIVE)
+        def condition = (KeyValueCondition) getParser("[name =~ /^\\(foo\\)/]").condition(Condition.Context.PRIMITIVE)
         assert condition.applies(getEnvironment("name", "(foo)"))
         assert !condition.applies(getEnvironment("name", "foo"))
@@ -127,6 +134,6 @@
     @Test
     public void testNegatedRegexCondition() throws Exception {
-        def condition = (Condition.KeyValueCondition) getParser("[surface!~/paved|unpaved/]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.Op.NREGEX.equals(condition.op)
+        def condition = (KeyValueCondition) getParser("[surface!~/paved|unpaved/]").condition(Condition.Context.PRIMITIVE)
+        assert Op.NREGEX.equals(condition.op)
         assert !condition.applies(getEnvironment("surface", "unpaved"))
         assert condition.applies(getEnvironment("surface", "grass"))
@@ -135,11 +142,11 @@
     @Test
     public void testBeginsEndsWithCondition() throws Exception {
-        def condition = (Condition.KeyValueCondition) getParser('[foo ^= bar]').condition(Condition.Context.PRIMITIVE)
-        assert Condition.Op.BEGINS_WITH.equals(condition.op)
+        def condition = (KeyValueCondition) getParser('[foo ^= bar]').condition(Condition.Context.PRIMITIVE)
+        assert Op.BEGINS_WITH.equals(condition.op)
         assert condition.applies(getEnvironment("foo", "bar123"))
         assert !condition.applies(getEnvironment("foo", "123bar"))
         assert !condition.applies(getEnvironment("foo", "123bar123"))
-        condition = (Condition.KeyValueCondition) getParser('[foo $= bar]').condition(Condition.Context.PRIMITIVE)
-        assert Condition.Op.ENDS_WITH.equals(condition.op)
+        condition = (KeyValueCondition) getParser('[foo $= bar]').condition(Condition.Context.PRIMITIVE)
+        assert Op.ENDS_WITH.equals(condition.op)
         assert !condition.applies(getEnvironment("foo", "bar123"))
         assert condition.applies(getEnvironment("foo", "123bar"))
@@ -158,10 +165,10 @@
     @Test
     public void testStandardKeyCondition() throws Exception {
-        def c1 = (Condition.KeyCondition) getParser("[ highway ]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.KeyMatchType.EQ.equals(c1.matchType)
+        def c1 = (KeyCondition) getParser("[ highway ]").condition(Condition.Context.PRIMITIVE)
+        assert KeyMatchType.EQ.equals(c1.matchType)
         assert c1.applies(getEnvironment("highway", "unclassified"))
         assert !c1.applies(getEnvironment("railway", "rail"))
-        def c2 = (Condition.KeyCondition) getParser("[\"/slash/\"]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.KeyMatchType.EQ.equals(c2.matchType)
+        def c2 = (KeyCondition) getParser("[\"/slash/\"]").condition(Condition.Context.PRIMITIVE)
+        assert KeyMatchType.EQ.equals(c2.matchType)
         assert c2.applies(getEnvironment("/slash/", "yes"))
         assert !c2.applies(getEnvironment("\"slash\"", "no"))
@@ -170,8 +177,8 @@
     @Test
     public void testYesNoKeyCondition() throws Exception {
-        def c1 = (Condition.KeyCondition) getParser("[oneway?]").condition(Condition.Context.PRIMITIVE)
-        def c2 = (Condition.KeyCondition) getParser("[oneway?!]").condition(Condition.Context.PRIMITIVE)
-        def c3 = (Condition.KeyCondition) getParser("[!oneway?]").condition(Condition.Context.PRIMITIVE)
-        def c4 = (Condition.KeyCondition) getParser("[!oneway?!]").condition(Condition.Context.PRIMITIVE)
+        def c1 = (KeyCondition) getParser("[oneway?]").condition(Condition.Context.PRIMITIVE)
+        def c2 = (KeyCondition) getParser("[oneway?!]").condition(Condition.Context.PRIMITIVE)
+        def c3 = (KeyCondition) getParser("[!oneway?]").condition(Condition.Context.PRIMITIVE)
+        def c4 = (KeyCondition) getParser("[!oneway?!]").condition(Condition.Context.PRIMITIVE)
         def yes = getEnvironment("oneway", "yes")
         def no = getEnvironment("oneway", "no")
@@ -193,6 +200,6 @@
     @Test
     public void testRegexKeyCondition() throws Exception {
-        def c1 = (Condition.KeyCondition) getParser("[/.*:(backward|forward)\$/]").condition(Condition.Context.PRIMITIVE)
-        assert Condition.KeyMatchType.REGEX.equals(c1.matchType)
+        def c1 = (KeyCondition) getParser("[/.*:(backward|forward)\$/]").condition(Condition.Context.PRIMITIVE)
+        assert KeyMatchType.REGEX.equals(c1.matchType)
         assert !c1.applies(getEnvironment("lanes", "3"))
         assert c1.applies(getEnvironment("lanes:forward", "3"))
@@ -214,5 +221,5 @@
     @Test
     public void testKeyKeyCondition() throws Exception {
-        def c1 = (Condition.KeyValueCondition) getParser("[foo = *bar]").condition(Condition.Context.PRIMITIVE)
+        def c1 = (KeyValueCondition) getParser("[foo = *bar]").condition(Condition.Context.PRIMITIVE)
         def w1 = new Way()
         w1.put("foo", "123")
@@ -221,5 +228,5 @@
         w1.put("bar", "123")
         assert c1.applies(new Environment(w1))
-        def c2 = (Condition.KeyValueCondition) getParser("[foo =~ */bar/]").condition(Condition.Context.PRIMITIVE)
+        def c2 = (KeyValueCondition) getParser("[foo =~ */bar/]").condition(Condition.Context.PRIMITIVE)
         def w2 = new Way(w1)
         w2.put("bar", "[0-9]{3}")
