public Set<String> names() {
        return Collections.unmodifiableSet(configKeys.keySet());
    }
@Test
    public void testNames() {
        final ConfigDef configDef = new ConfigDef()
                .define("a", Type.STRING, Importance.LOW, "docs")
                .define("b", Type.STRING, Importance.LOW, "docs");
        Set<String> names = configDef.names();
        assertEquals(new HashSet<>(Arrays.asList("a", "b")), names);
        // should be unmodifiable
        try {
            names.add("new");
            fail();
        } catch (UnsupportedOperationException e) {
            // expected
        }
    }