enum Enum {
    A, B
}

class Test {

    public signal void test_signal_1 (Test test, Enum? e);
    public signal void test_signal_2 (Test test, Enum e);

    public signal void test_signal_3 (Test test, int? e);
    public signal void test_signal_4 (Test test, int e);

    public void invoke () {
        test_signal_1.connect ((test, e) => { print(e.to_string() + "\n"); });
        test_signal_2.connect ((test, e) => { print(e.to_string() + "\n"); });
        test_signal_3.connect ((test, e) => { print(e.to_string() + "\n"); });
        test_signal_4.connect ((test, e) => { print(e.to_string() + "\n"); });
        test_signal_1 (this, Enum.A);
        test_signal_2 (this, Enum.B);
        test_signal_3 (this, 3);
        test_signal_4 (this, 4);
    }

}

void main() {
    new Test ().invoke ();
}
