interface U{
    void metod1();
    void metod2();
    void metod3();
}
class A{
    public static U makeU(){
        return new U() {
            public void metod1(){
                System.out.println("metod1");
            }
            public void metod2(){
                System.out.println("metod2");
            }
            public void metod3(){
                System.out.println("metod3");
            }
        };
    }
}
class B {
    public static U[] makeArU(int x) {
        System.out.println("Array U has length" + x);
        return new U[x];
            }
    public static U[] fillU(U[] u){
        for (int i = 0; i<u.length; i++) {
            u[i] = A.makeU();
            System.out.println("u object id "+i+" added to U array");
        }
        return u;
    }
    public static void callU(U[] u) {
        for (int i = 0; i < u.length; i++) {
            u[i].metod1();
            u[i].metod2();
            u[i].metod3();
        }
    }
}
public class Main {
	public static void main(String[] args) {
		B.callU(B.fillU(B.makeArU(5)));
    }
}
