/// <summary>
        /// Called when a method is visited.
        /// </summary>
        /// <param name="methodDeclaration"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public override object VisitMethodDeclaration(MethodDeclaration methodDeclaration, object data)
        {
            INode nodeParent = methodDeclaration.Parent;

            if (nodeParent is TypeDeclaration)
            {
                TypeDeclaration typeDeclaration = (TypeDeclaration)methodDeclaration.Parent;

                EventType evt = new EventType();

                evt.id = methodDeclaration.Name;
                if (methodDeclaration.Parameters.Count > 0)
                {
                    evt.parameter = new ParameterType[methodDeclaration.Parameters.Count];
                    for (int i = 0; i < methodDeclaration.Parameters.Count; i++)
                    {
                        ParameterDeclarationExpression paramDecl = methodDeclaration.Parameters[i];
                        ParameterType param = new ParameterType();
                        param.name       = paramDecl.ParameterName;
                        param.type       = paramDecl.TypeReference.ToString();
                        evt.parameter[i] = param;
                    }
                }
                model.AddEvent(evt);
                model.AddEventToFeeder(feeder, evt.id);
            }

            return(base.VisitMethodDeclaration(methodDeclaration, data));
        }
        /// <summary>
        /// Validate the event tag.
        /// </summary>
        /// <param name="reader">The Xml reader.</param>
        /// <param name="model">The State Machine Model</param>
        private void ValidateEvent(XmlReader reader, StateMachineType model, string feeder)
        {
            string eventName = reader[TAG_NAME];
            string eventId   = reader[TAG_EVENT_ID];

            ts.TraceEvent(TraceEventType.Verbose, 1, "ValidateEvent name {0},  id {1}", eventName, eventId);
            model.AddEventToFeeder(feeder, eventId);
        }