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; }