internal static Property[] GetExpandableProperties(ClassDeclarationSyntax classDeclaration, SemanticModel model)
        {
            var classAttribute = classDeclaration.GetNotifyAttribute();
            var isClassNotify = classAttribute != null;

            Property[] notifyProperties;
            if (isClassNotify)
            {
                notifyProperties = (from member in classDeclaration.Members.OfType<PropertyDeclarationSyntax>()
                                    where member.GetNonNotifyAttribute() == null
                                    select new Property(model, member, classAttribute: classAttribute)).ToArray();
            }
            else
            {
                notifyProperties = (from member in classDeclaration.Members.OfType<PropertyDeclarationSyntax>()
                                    let attribute = member.GetNotifyAttribute()
                                    where attribute != null
                                    select new Property(model, member, attribute)).ToArray();
            }

            return notifyProperties;
        }