DefaultReconciliationEngine implements InternalReconciliationEngine<EVENT> { @Override public EntityHolder getReferenceView() { return modelHolder.getReference(); } DefaultReconciliationEngine(EntityHolder bootstrapModel,
                                       boolean newlyCreated,
                                       DifferenceResolver<EVENT> runningDifferenceResolver,
                                       Map<Object, Comparator<EntityHolder>> indexComparators,
                                       ReconcileEventFactory<EVENT> eventFactory,
                                       Function<ChangeAction, List<Tag>> extraChangeActionTags,
                                       Function<EVENT, List<Tag>> extraModelActionTags,
                                       TitusRuntime titusRuntime); @Override boolean applyModelUpdates(); @Override boolean hasPendingTransactions(); @Override void emitEvents(); @Override boolean closeFinishedTransactions(); @Override boolean triggerActions(); @Override Observable<Void> changeReferenceModel(ChangeAction referenceUpdate); @Override Observable<Void> changeReferenceModel(ChangeAction referenceUpdate, String entityHolderId); @Override EntityHolder getReferenceView(); @Override EntityHolder getRunningView(); @Override EntityHolder getStoreView(); @Override List<EntityHolder> orderedView(ORDER_BY orderingCriteria); @Override Observable<EVENT> events();  }
@Test public void testChildAddRemove() { addChild("child1"); assertThat(engine.getReferenceView().getId()).isEqualTo("myRoot"); assertThat(engine.getReferenceView().getChildren()).hasSize(1); removeChild("child1"); assertThat(engine.getReferenceView().getId()).isEqualTo("myRoot"); assertThat(engine.getReferenceView().getChildren()).isEmpty(); }