Might want to speak to Gary, Artem or Mark F, this seems odd to have an instanceof check this deep in the code.  IntegrationEvaluationContextAware has EvaluationContext in the signature, so either an instanceof check where that is being implemented or I notice that there is a utility method used in other SI classes, ExpressionUtils, that returns the "SI" evaluation context if available or creates a new one (with a map accessor, StandardTypeConverter, and BeanFactoryResolver) if it is not available.  Maybe we can depend on the concrete impl throughout the dependency chain in ctor signatures or call out to that utility method here.