private <O extends ObjectType> void recordChanges(ChangesByState rv, LensContextType modelOperationContext, ModelInteractionService modelInteractionService,
Task task, OperationResult result) throws ObjectNotFoundException, SchemaException {
if (modelOperationContext == null) {
return;
}
ModelContext<O> modelContext = ModelContextUtil.unwrapModelContext(modelOperationContext, modelInteractionService, task, result);
ObjectTreeDeltas<O> deltas = baseModelInvocationProcessingHelper.extractTreeDeltasFromModelContext(modelContext);
ObjectTreeDeltas<O> target;
switch (modelContext.getState()) {
case INITIAL:
case PRIMARY: target = rv.getWaitingToBeApplied(); break;
case SECONDARY: target = rv.getBeingApplied(); break;
case EXECUTION:
case POSTEXECUTION:
case FINAL: target = rv.getApplied(); break;
default: throw new IllegalStateException("Illegal model state: " + modelContext.getState());
}
target.merge(deltas);
}