private TypeInfo GetTypeInfo(Type type)
        {
            var typeInfo = new TypeInfo()
            {
                DeclarationName = GetTypeDeclaration(type.GetTypeInfo()),
                Name            = type.Name
            };
            var members = type.GetMembers(BindingFlags.NonPublic
                                          | BindingFlags.Instance
                                          | BindingFlags.Public
                                          | BindingFlags.Static);

            foreach (var member in members)
            {
                var memberInfo = new MemberInfo();
                if (member.MemberType == MemberTypes.Method)
                {
                    var method = (MethodInfo)member;
                    if (method.IsDefined(typeof(ExtensionAttribute), false))
                    {
                        _extensionMethods.Add(method);
                    }
                    memberInfo.DeclarationName = CreateMethodDeclarationString(method);
                }
                else if (member.MemberType == MemberTypes.Property)
                {
                    memberInfo.DeclarationName = GetPropertyDeclaration((PropertyInfo)member);
                }
                else if (member.MemberType == MemberTypes.Field)
                {
                    memberInfo.DeclarationName = GetFieldDeclaration(((FieldInfo)member));
                }
                else if (member.MemberType == MemberTypes.Event)
                {
                    memberInfo.DeclarationName = GetEventDeclaration((EventInfo)member);
                }
                else if (member.MemberType == MemberTypes.Constructor)
                {
                    memberInfo.DeclarationName = GetConstructorDeclaration((ConstructorInfo)member);
                }
                else
                {
                    memberInfo.DeclarationName = GetTypeDeclaration((System.Reflection.TypeInfo)member);
                }
                if (memberInfo.DeclarationName != null)
                {
                    memberInfo.Name = member.Name;
                    typeInfo.AddMember(memberInfo);
                }
            }

            return(typeInfo);
        }