Source:
<code>BrooklynMementoManifest loadMementoManifest(RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMementoManifest loadMementoManifest(@Nullable BrooklynMementoRawData mementoData, RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMemento loadMemento(LookupContext lookupContext, RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMemento loadMemento(@Nullable BrooklynMementoRawData mementoData, LookupContext lookupContext, RebindExceptionHandler exceptionHandler) throws IOException; @Deprecated void checkpoint(BrooklynMemento memento, PersistenceExceptionHandler exceptionHandler); void checkpoint(BrooklynMementoRawData newMemento, PersistenceExceptionHandler exceptionHandler); void delta(Delta delta, PersistenceExceptionHandler exceptionHandler); <START> void queueDelta(Delta delta); <END> void enableWriteAccess(); void disableWriteAccess(boolean graceful); void stop(boolean graceful); @VisibleForTesting void waitForWritesCompleted(Duration timeout) throws InterruptedException, TimeoutException; @VisibleForTesting void waitForWritesCompleted(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException; String getBackingStoreDescription(); public interface Delta { Collection<LocationMemento> locations(); Collection<EntityMemento> entities(); Collection<PolicyMemento> policies(); Collection<EnricherMemento> enrichers(); Collection<FeedMemento> feeds(); Collection<CatalogItemMemento> catalogItems(); Collection<String> removedLocationIds(); Collection<String> removedEntityIds(); Collection<String> removedPolicyIds(); Collection<String> removedEnricherIds(); Collection<String> removedFeedIds(); Collection<String> removedCatalogItemIds(); Collection<? extends Memento> getObjectsOfType(BrooklynObjectType type); Collection<String> getRemovedIdsOfType(BrooklynObjectType type); }</code><technical_language>PeriodicDeltaChangeListener, wraps calls persister.delta. handles queues, smart stuff if do a modify a remove time period, discard modify do remove. try reuse PeriodicDeltaChangeListener somehow, queueDelta here</technical_language>

Target:
BrooklynMementoManifest loadMementoManifest(RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMementoManifest loadMementoManifest(@Nullable BrooklynMementoRawData mementoData, RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMemento loadMemento(LookupContext lookupContext, RebindExceptionHandler exceptionHandler) throws IOException; BrooklynMemento loadMemento(@Nullable BrooklynMementoRawData mementoData, LookupContext lookupContext, RebindExceptionHandler exceptionHandler) throws IOException; @Deprecated void checkpoint(BrooklynMemento memento, PersistenceExceptionHandler exceptionHandler); void checkpoint(BrooklynMementoRawData newMemento, PersistenceExceptionHandler exceptionHandler); void delta(Delta delta, PersistenceExceptionHandler exceptionHandler); @Beta void queueDelta(Delta delta); void enableWriteAccess(); void disableWriteAccess(boolean graceful); void stop(boolean graceful); @VisibleForTesting void waitForWritesCompleted(Duration timeout) throws InterruptedException, TimeoutException; @VisibleForTesting void waitForWritesCompleted(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException; String getBackingStoreDescription(); public interface Delta { Collection<LocationMemento> locations(); Collection<EntityMemento> entities(); Collection<PolicyMemento> policies(); Collection<EnricherMemento> enrichers(); Collection<FeedMemento> feeds(); Collection<CatalogItemMemento> catalogItems(); Collection<String> removedLocationIds(); Collection<String> removedEntityIds(); Collection<String> removedPolicyIds(); Collection<String> removedEnricherIds(); Collection<String> removedFeedIds(); Collection<String> removedCatalogItemIds(); Collection<? extends Memento> getObjectsOfType(BrooklynObjectType type); Collection<String> getRemovedIdsOfType(BrooklynObjectType type); }