public override bool IsApplied(BuildContext context, AbstractTypeBuilderList builders)
        {
            if (_interceptorType == null && _interceptType == 0)
            {
                return(false);
            }

            foreach (IAbstractTypeBuilder builder in builders)
            {
                InterceptorAspectBuilder interceptor = builder as InterceptorAspectBuilder;

                if (interceptor != null)
                {
                    if (interceptor._interceptorType == null && interceptor._interceptType == 0)
                    {
                        return(false);
                    }

                    if (builder == this)
                    {
                        break;
                    }
                }
            }

            if (context.IsMethodOrProperty)
            {
                switch (context.Step)
                {
                case BuildStep.Begin:   return(true);

                case BuildStep.Before:  return((_interceptType & InterceptType.BeforeCall) != 0);

                case BuildStep.After:   return((_interceptType & InterceptType.AfterCall) != 0);

                case BuildStep.Catch:   return((_interceptType & InterceptType.OnCatch) != 0);

                case BuildStep.Finally: return((_interceptType & InterceptType.OnFinally) != 0);

                case BuildStep.End:     return(true);
                }
            }

            return(false);
        }
        public override bool IsCompatible(BuildContext context, IAbstractTypeBuilder typeBuilder)
        {
            InterceptorAspectBuilder builder = typeBuilder as InterceptorAspectBuilder;

            return(builder == null || _interceptorType != builder._interceptorType);
        }