public class TestTwoArgs //<T extends AS, AS extends Z, Z extends AN, AN extends AG, AG>
{
    //AS
    a;

	//AN -> AN
    id(b) {
        var c = b;
        return c;
    }

	//T -> AS
    setA(x) {
        a = x;
        return a;
    }
	
	//(AG,Z) -> AG 
    m(x,y) {
        x = id(y);
        return x;
    }
    
    //<AI extends AN, AH extends T> (AI, AH) -> AG
    main(x,y) {
    	return m(id(x),setA(y));
    }
}