@Override
 public void shutdown() {
   nonStopManager.shutdown();
   ToolkitInternal toolkit = null;
   try {
     toolkit = getInitializedToolkit();
   } catch (Exception e) {
     // Ignore if toolkit failed to initialize
   }
   if (toolkit != null) {
     toolkit.shutdown();
   }
   nonStopInitiailzationService.shutdown();
 }
  private <T extends ToolkitObject> T getNonStopProxy(
      final String name,
      final AbstractToolkitObjectLookupAsync<T> toolkitObjectLookup,
      final ToolkitObjectType objectType,
      Class clazz) {
    NonStopConfigurationLookup nonStopConfigurationLookup =
        getNonStopConfigurationLookup(name, objectType);

    nonStopInitiailzationService.initialize(
        toolkitObjectLookup, nonStopConfigurationLookup.getNonStopConfiguration());

    return ToolkitInstanceProxy.newNonStopProxy(
        nonStopConfigurationLookup, context, toolkitObjectLookup, clazz);
  }
  @Override
  public <V> ToolkitStore<String, V> getStore(
      final String name, final Configuration configuration, final Class<V> klazz) {
    NonStopConfigurationLookup nonStopConfigurationLookup =
        getNonStopConfigurationLookup(name, ToolkitObjectType.STORE);

    final AbstractToolkitObjectLookupAsync<ToolkitStore> toolkitObjectLookup =
        new AbstractToolkitObjectLookupAsync<ToolkitStore>(name, abortableOperationManager) {
          @Override
          public ToolkitStore<String, V> lookupObject() {
            return getInitializedToolkit().getStore(name, configuration, klazz);
          }
        };

    nonStopInitiailzationService.initialize(
        toolkitObjectLookup, nonStopConfigurationLookup.getNonStopConfiguration());

    return ToolkitInstanceProxy.newNonStopProxy(
        nonStopConfigurationLookup, context, toolkitObjectLookup, ToolkitStore.class);
  }