Generally it's best to provide only primitives as outputs. Casting the Output like that is just masking the problem. Even if the source and destination projects are using the same type at runtime, the output in the stack may be an old version of that type, and you'll be forced to clean up when types change.