As for SAM wrappers, the bytecode sequence new A dup new B dup invokespecial B.<init> invokespecial A.<init> breaks the inliner, so instead we do new B dup invokespecial B.<init> store x new A dup load x invokespecial A.<init>