
class Base {
    int field1;

    Base(int value) { 
        self.field1 = value;
    }

    virtual void show() {
        Clover.println("field1 " + self.field1.toString());
    }
    void method() {
        Clover.println("I'm Base.method().");
    }
    virtual void method2() {
        Clover.println("I'm Base.method2().");
    }
}

class Extended2 extends Base {
    int field3;

    Extended2(int a, int b, int c) {
        super(a, b);
        self.field3 = c;
    }

    virtual void show() {
        super();
        Clover.println("field3 " + self.field3.toString());
    }
    virtual void method2() {
        Clover.println("I'm Extended2. method2().");
    }
}

class Base {
    int field2;

    Base(int value1, int value2) {
        mixin(value1);
        self.field2 = value2;
    }

    virtual mixin void show() {
        mixin();
        Clover.println("field2 " + self.field2.toString());
    }
    void method3() {
        Clover.println("I'm Base.method3().");
    }
}

