MvcGraph { public MvcComponent getRootComponent() { return (MvcComponent) graph.getRootComponent(); }  void registerMonitor(final Graph.Monitor monitor); void unregisterMonitor(final Graph.Monitor monitor); void clearMonitors(); T reference(Class<T> type, Annotation qualifier); void dereference(T instance, Class<T> type, Annotation qualifier); void use(final Class<T> type, final Consumer<T> consumer); void use(final Class<T> type, final Annotation qualifier, final Consumer<T> consumer); void inject(final Object target); void release(final Object target); void setRootComponent(final MvcComponent component); MvcComponent getRootComponent(); void registerDereferencedListener(
            final Provider.DereferenceListener onProviderFreedListener); void unregisterDereferencedListener(
            final Provider.DereferenceListener onProviderFreedListener); void clearDereferencedListeners();  }
@Test public void use_method_should_retain_and_release_instance_correctly() throws ProvideException, ProviderConflictException { graph.getRootComponent().register(new DeviceModule()); do_use_method_should_retain_and_release_instance_correctly(); }