public void testGetMapKey() {
        String label = null;

        // Simple Properties (expect null)
        for (int i = 0; i < validProperties.length; i++) {
            try {
                label = "Simple " + label(validProperties[i], i);
                assertEquals(label, null, resolver.getKey(validProperties[i]));
            } catch (Throwable t) {
                fail(label + " threw " + t);
            }
        }

        // Indexed Properties (expect null)
        for (int i = 0; i < validIndexProperties.length; i++) {
            try {
                label = "Indexed " + label(validIndexProperties[i], i);
                assertEquals(label, null, resolver.getKey(validIndexProperties[i]));
            } catch (Throwable t) {
                fail(label + " threw " + t);
            }
        }

        // Mapped Properties (expect correct map key)
        for (int i = 0; i < validMapProperties.length; i++) {
            try {
                label = "Mapped " + label(validMapProperties[i], i);
                assertEquals(label, validMapKeys[i], resolver.getKey(validMapProperties[i]));
            } catch (Throwable t) {
                fail(label + " threw " + t);
            }
        }

        // Malformed
        label = "Malformed";
        try {
            String key  = resolver.getKey("foo(bar");
            fail(label + " expected IllegalArgumentException: " + key);
        } catch (IllegalArgumentException e) {
            assertEquals(label + " Error Message", "Missing End Delimiter", e.getMessage());
        } catch (Throwable t) {
            fail(label + " expected IllegalArgumentException: " + t);
        }
 }