public class TestWork : GLib.Object {
    construct {
        var test2 = new Test2 ();
        test2.t2_signal.connect (() => {
            warning ("hey");
        });
    }

    ~TestWork () {
        message ("TEST WORK DESTROYED");
    }
}

public class TestNotWork : GLib.Object {
    construct {
        var test2 = new Test2 ();
        test2.t2_signal.connect (() => {
            warning ("hey2");
            test2.reticulate ();
        });
    }

    ~TestNotWork () {
        message ("TEST NOT WORK DESTROYED");
    }
}

public class Test2 : GLib.Object {
    public signal void t2_signal ();
    public void reticulate () {
        
    }
}


int main (ref string[] args) {
    start_tests ();
    return 0;
}

public void start_tests () {
    var tw = new TestWork ();
    var tnw = new TestNotWork ();
}
