final class Example { static > void wild(final Payroll payroll) { // just an ide error bound(payroll); final PayRun payRun = payroll.getPayRun(); final Payroll payroll1 = payRun.getPayroll(); final D details = payRun.getDetails(); payRun.updateDetails(details); } static

, PR extends PayRun, D extends PayRunDetails> void bound(final Payroll payroll) { final PR payRun = payroll.getPayRun(); final P payroll1 = payRun.getPayroll(); final D details = payRun.getDetails(); payRun.updateDetails(details); } interface PayRunDetails> {} interface Payroll

, PR extends PayRun, D extends PayRunDetails> { PR getPayRun(); } interface PayRun

, PR extends PayRun, D extends PayRunDetails> { P getPayroll(); D getDetails(); void updateDetails(D value); } }