infer. Schema really only uses infer in a couple of places: From, To are the biggest culprits because they infer the types from functions using ReturnType, which uses infer under the hood. I found that if I patch Schema to:To/From to:Class, then suddenly my recursive types work as expected.