AssetType implements Closeable { public synchronized boolean removeProducer(AssetDataProducer<U> producer) { return producers.remove(producer); } @SuppressWarnings("unchecked")  AssetType(Class<T> assetClass, AssetFactory<T, U> factory); @Override synchronized void close(); @SuppressWarnings("unchecked") void processDisposal(); synchronized boolean isClosed(); synchronized void disposeAll(); void refresh(); Class<T> getAssetClass(); Class<U> getAssetDataClass(); void setResolutionStrategy(ResolutionStrategy strategy); synchronized void addProducer(AssetDataProducer<U> producer); List<AssetDataProducer<U>> getProducers(); synchronized boolean removeProducer(AssetDataProducer<U> producer); synchronized void clearProducers(); Optional<T> getAsset(ResourceUrn urn); @SuppressWarnings("unchecked") Optional<T> getInstanceAsset(ResourceUrn urn); Optional<T> reload(ResourceUrn urn); Optional<T> getAsset(String urn); Optional<T> getAsset(String urn, Name moduleContext); Set<ResourceUrn> resolve(String urn); Set<ResourceUrn> resolve(String urn, Name moduleContext); T loadAsset(ResourceUrn urn, U data); boolean isLoaded(ResourceUrn urn); Set<ResourceUrn> getLoadedAssetUrns(); Set<T> getLoadedAssets(); Set<ResourceUrn> getAvailableAssetUrns(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }
@Test public void removeProducer() { AssetDataProducer producer = mock(AssetDataProducer.class); assetType.addProducer(producer); assetType.removeProducer(producer); assertTrue(assetType.getProducers().isEmpty()); }