
class GenericsTest7ClassA <T, T2> {
    T value1;
    T2 value2;

    GenericsTest7ClassA(T value1, T2 value2) {
        self.value1 = value1;
        self.value2 = value2;
    }

    T2 get_value2() {
        return self.value2;
    }
}

class GenericsTest2 <T, T2, T3> {
    T value1;
    T2 value2;
    T3 value3;
    GenericsTest7ClassA<T, T2> value4;

    GenericsTest2(T a, T2 b, T3 c) {
        self.value1 = a;
        self.value2 = b;
        self.value3 = c;
    }

    void set_class_a(GenericsTest7ClassA<T, T2> a) {
        self.value4 = a;
    }

    GenericsTest7ClassA<T, T2> get_class_a() {
        return self.value4;
    }

    T2 get_value2_in_value4() {
        return self.value4.get_value2();
    }
}
