ClientConfig implements Configurable<ClientConfig>, ExtendedConfig { ClientConfig snapshot() { state.markAsShared(); return new ClientConfig(state); } ClientConfig();  ClientConfig(final Class<?>... providerClasses);  ClientConfig(final Object... providers);   ClientConfig(final JerseyClient parent);   ClientConfig(final JerseyClient parent, final Configuration that); private  ClientConfig(final State state); ClientConfig loadFrom(final Configuration config); @Override ClientConfig register(final Class<?> providerClass); @Override ClientConfig register(final Object provider); @Override ClientConfig register(final Class<?> providerClass, final int bindingPriority); @Override ClientConfig register(final Class<?> providerClass, final Class<?>... contracts); @Override ClientConfig register(final Class<?> providerClass, final Map<Class<?>, Integer> contracts); @Override ClientConfig register(final Object provider, final int bindingPriority); @Override ClientConfig register(final Object provider, final Class<?>... contracts); @Override ClientConfig register(final Object provider, final Map<Class<?>, Integer> contracts); @Override ClientConfig property(final String name, final Object value); @Override ClientConfig getConfiguration(); @Override RuntimeType getRuntimeType(); @Override Map<String, Object> getProperties(); @Override Object getProperty(final String name); @Override Collection<String> getPropertyNames(); @Override boolean isProperty(final String name); @Override boolean isEnabled(final Feature feature); @Override boolean isEnabled(final Class<? extends Feature> featureClass); @Override boolean isRegistered(final Object component); @Override Map<Class<?>, Integer> getContracts(final Class<?> componentClass); @Override boolean isRegistered(final Class<?> componentClass); @Override Set<Class<?>> getClasses(); @Override Set<Object> getInstances(); ClientConfig connectorProvider(final ConnectorProvider connectorProvider); ClientConfig executorService(final ExecutorService executorService); ClientConfig scheduledExecutorService(final ScheduledExecutorService scheduledExecutorService); Connector getConnector(); ConnectorProvider getConnectorProvider(); ExecutorService getExecutorService(); ScheduledExecutorService getScheduledExecutorService(); ClientExecutor getClientExecutor(); JerseyClient getClient(); @Override boolean equals(final Object obj); @Override int hashCode();  }
@Test public void testSnapshot() { ClientConfig c_a = new ClientConfig().property("common_name", "common_value"); ClientConfig c_b = c_a.snapshot(); assertNotNull(c_b); assertNotSame(c_a, c_b); assertEquals(c_a, c_b); assertEquals("common_value", c_a.getProperty("common_name")); assertEquals("common_value", c_b.getProperty("common_name")); c_b.property("name", "value"); assertFalse(c_a.equals(c_b)); assertEquals("value", c_b.getProperty("name")); assertNull(c_a.getProperty("name")); }