public static void TestAll()
    {
        TestEnum t1 = "e3".ToTestEnum();
        TestEnum t2 = "e2".ToTestEnum();
        TestEnum t3 = "non existing".ToTestEnum();  // default(TestEnum) for non existing

        bool b1 = t3.IsSet(TestEnum.e1);            // you can ommit type
        bool b2 = t3.IsSet <TestEnum>(TestEnum.e2); // you can specify explicite type

        TestStruct t;
        // #generates compile error (so no missuse)
        //bool b3 = t.IsSet<TestEnum>(TestEnum.e1);
    }