public override void Run(EPServiceProvider epService)
        {
            foreach (var clazz in new Type[] { typeof(SupportBean_A), typeof(SupportBean_B), typeof(SupportBean_C) })
            {
                epService.EPAdministrator.Configuration.AddEventType(clazz);
            }

            // all: unidirectional and full-outer-join
            RunAssertion2Stream(epService);
            RunAssertion3Stream(epService);
            RunAssertion3StreamMixed(epService);
            RunAssertion4StreamWhereClause(epService);

            // no-view-declared
            TryInvalid(epService,
                       "select * from SupportBean_A unidirectional full outer join SupportBean_B#keepall unidirectional",
                       "Error starting statement: The unidirectional keyword requires that no views are declared onto the stream (applies to stream 1)");

            // not-all-unidirectional
            TryInvalid(epService,
                       "select * from SupportBean_A unidirectional full outer join SupportBean_B unidirectional full outer join SupportBean_C#keepall",
                       "Error starting statement: The unidirectional keyword must either apply to a single stream or all streams in a full outer join");

            // no iterate
            SupportMessageAssertUtil.TryInvalidIterate(epService,
                                                       "select * from SupportBean_A unidirectional full outer join SupportBean_B unidirectional",
                                                       "Iteration over a unidirectional join is not supported");
        }