/// <summary>
        /// Calls <see cref="Verify(ConstructorInfo[])" />, <see cref="Verify(MethodInfo[])" /> and
        /// <see cref="Verify(PropertyInfo[])" /> for each constructor, method and property in
        /// <paramref name="type" />.
        /// </summary>
        /// <param name="type">The type.</param>
        public virtual void Verify(Type type)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            this.Verify(type.GetConstructors());
            this.Verify(IdiomaticAssertion.GetMethodsExceptPropertyAccessors(type));
            this.Verify(type.GetProperties());
        }
 private static IEnumerable <MethodInfo> GetMethodsForAssertion(Type type)
 {
     return(IdiomaticAssertion.IsStaticClass(type)
         ? IdiomaticAssertion.GetMethodsExceptPropertyAccessors(type).Where(m => m.IsStatic)
         : IdiomaticAssertion.GetMethodsExceptPropertyAccessors(type));
 }