protected virtual NotThreadSafeMemberInfo CheckEvent(EventInfo e)
        {
            if (this.IsCompilerGenerated(e) || ThreadSafeAttribute.ExsitsOn(e))
            {
                return(null);
            }

            var result = new NotThreadSafeMemberInfo(e, ThreadSafetyViolationType.EventFound);

            return(result);
        }
        protected virtual NotThreadSafeMemberInfo CheckProperty(PropertyInfo property)
        {
            if (this.IsCompilerGenerated(property) || ThreadSafeAttribute.ExsitsOn(property))
            {
                return(null);
            }

            if (property.CanWrite)
            {
                return(new NotThreadSafeMemberInfo(property, ThreadSafetyViolationType.NonReadonlyMember));
            }

            var result = this.CheckMember(property, property.PropertyType);

            return(result);
        }
        protected virtual NotThreadSafeMemberInfo CheckField(FieldInfo field)
        {
            if (field.IsLiteral || this.IsCompilerGenerated(field) || ThreadSafeAttribute.ExsitsOn(field))
            {
                return(null);
            }

            if (!field.IsInitOnly)
            {
                return(new NotThreadSafeMemberInfo(field, ThreadSafetyViolationType.NonReadonlyMember));
            }

            var result = this.CheckMember(field, field.FieldType);

            return(result);
        }