@Override
public void visit(OperationModel operationModel) {
OutputModel typedOutputModel =
resolveOutputModelType(operationModel.getOutput(), outputMetadataDescriptor.getPayloadMetadata());
OutputModel typedAttributesModel =
resolveOutputModelType(operationModel.getOutputAttributes(), outputMetadataDescriptor.getAttributesMetadata());
typedModel.set((T) new ImmutableOperationModel(operationModel.getName(),
operationModel.getDescription(),
resolveParameterGroupModelType(
operationModel.getParameterGroupModels(),
inputMetadataDescriptor.getAllParameters()),
operationModel.getNestedComponents(),
typedOutputModel, typedAttributesModel, operationModel.isBlocking(),
operationModel.getExecutionType(), operationModel.requiresConnection(),
operationModel.isTransactional(),
operationModel.supportsStreaming(),
operationModel.getDisplayModel().orElse(null),
operationModel.getErrorModels(),
operationModel.getStereotype(),
operationModel.getModelProperties(),
operationModel.getNotificationModels(),
operationModel.getDeprecationModel().orElse(null)));
}