
class Generics10_3ClassB<T extends int> {
    T field;

    Generics10_3ClassB(T value) {
        self.field = value;
    }

    T get_field() {
        return self.field;
    }

    virtual T get_field2() {
        return new T();
    }
}

class Generics10_3ClassC<T extends int> extends Generics10_3ClassB<T> {
    T field2;

    Generics10_3ClassC(T value, T value2) {
        super(value);

        self.field2 = value2;
    }

    T get_field() {
        return self.field;
    }

    virtual T get_field2() {
        return self.field2;
    }
}

class Generics10_3ClassA <T extends Generics10_3ClassB<int>> {
    T field;

    Generics10_3ClassA(T value) {
        self.field = value;
    }

    T get_field() {
        return self.field;
    }

    int call_field_method() {
        return self.field.get_field();
    }

    int call_field_method2() {
        return self.field.get_field2();
    }
}

