TenantCodeInjector
The Viaduct engine always invokes tenant code by first instantiating a containing class (e.g., a @Resolver class), and then calling a member of that instance. A new instance is created for each invocation of a tenant function, even when that function is invoked multiple times per request.