public static Genie genie() { final Map<Class, Object> singletonRepo = new HashMap<>(); Genie genie = Genie.createWithoutPlugins(); genie.registerProvider(ScopeCache.SingletonScope.class, new Provider<ScopeCache.SingletonScope>() { @Override public ScopeCache.SingletonScope get() { return new ScopeCache.SingletonScope() { @Override public <T> T get(Class<T> aClass) { return (T) singletonRepo.get(aClass); } @Override public <T> void put(Class<T> aClass, T t) { singletonRepo.put(aClass, t); } }; } }); return genie; }