public IDictionary <string, IList <MethodInfo> > GetUniqueMethodsByName(bool instance)
        {
            MethodInfo[] methods;
            if (instance == false)
            {
                methods = m_type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
            }
            else
            {
                methods = m_type.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            }

            methods = methods.Where(m => !m.IsSpecialName && m.GetCustomAttribute <BaristaIgnoreAttribute>(true) == null).ToArray();

            var methodTable = new Dictionary <string, IList <MethodInfo> >();

            foreach (var methodInfo in methods)
            {
                var methodName = BaristaPropertyAttribute.GetMemberName(methodInfo);
                if (methodTable.ContainsKey(methodName))
                {
                    methodTable[methodName].Add(methodInfo);
                }
                else
                {
                    methodTable.Add(methodName, new List <MethodInfo>()
                    {
                        methodInfo
                    });
                }
            }

            return(methodTable);
        }
        public IDictionary <string, EventInfo> GetEventTable(bool instance)
        {
            EventInfo[] events;
            if (instance == false)
            {
                events = m_type.GetEvents(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
            }
            else
            {
                events = m_type.GetEvents(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            }

            events = events.Where(p => p.GetCustomAttribute <BaristaIgnoreAttribute>(true) == null).ToArray();

            var eventTable = new Dictionary <string, EventInfo>();

            foreach (var eventInfo in events)
            {
                var eventName = BaristaPropertyAttribute.GetMemberName(eventInfo);
                eventTable.Add(eventName, eventInfo);
            }

            return(eventTable);
        }