
abstract class Generics9TestClassA <T, T2> {
    abstract void method(T value);
}

class Generics9TestClassC<T, T2> extends Generics9TestClassA<T2, T> {
    T field1;
    T2 field2;

    Generics9TestClassC(T a, T2 b) {
        self.field1 = a;
        self.field2 = b;
    }

    virtual void method(T2 value) {
println("Generics9TestClassC::method");
    }
}

class Generics9TestOperator <T, T2, T3 extends Generics9TestClassA<T2,T>, T4> {
    void call_method(T3 a, T2 b) {
        a.method(b);
    }
}

