Pretty much any simple value in a detyped operation can be of type ModelType.EXPRESSION instead something an OperationHandler might expect, like ModelType.STRING or ModelType.INT. All handlers need to deal with this fact.
There are two main aspects to this:
1) Any parameter validation that goes on needs to account for the presence of expression values. Basically that means
a) accept the expression for storage in the model
b) call resolve() on the operation and use the resolved version for application to the runtime.
c) re-validation of the resolved value may be necessary