private bool IsAutomaticProperty(PropertyDeclarationSyntax prop)
 {
     return prop.DescendantNodes()
         .OfType<AccessorDeclarationSyntax>()
         .Where(acc => !acc.ChildNodes().Any())
         .Any();
 }
        private static IEnumerable<ObjectCreationExpressionSyntax> GetObjectCreations(SyntaxNodeAnalysisContext context, ClassDeclarationSyntax classDeclaration, PropertyDeclarationSyntax propertyDeclarationSyntax, IPropertySymbol propertySymbol)
        {
            var objectCreations = classDeclaration.DescendantNodes()
                            .OfType<AssignmentExpressionSyntax>()
                            .Where(a => context.SemanticModel.GetSymbolInfo(a.Left).Symbol.Equals(propertySymbol) && a.Right is ObjectCreationExpressionSyntax)
                            .Select(a => a.Right as ObjectCreationExpressionSyntax).ToList();

            var arrowExpressionClause = propertyDeclarationSyntax.DescendantNodes()
                .OfType<ArrowExpressionClauseSyntax>()
                .SingleOrDefault(a => a.Expression is ObjectCreationExpressionSyntax)
                ?.Expression as ObjectCreationExpressionSyntax;
            if (arrowExpressionClause != null)
            {
                objectCreations.Add(arrowExpressionClause);
            }

            var getAcessorDeclararion = propertyDeclarationSyntax.DescendantNodes()
                .OfType<AccessorDeclarationSyntax>()
                .SingleOrDefault(a => a.IsKind(SyntaxKind.GetAccessorDeclaration));
            if (getAcessorDeclararion != null)
            {
                objectCreations.AddRange(getAcessorDeclararion.DescendantNodes()
                            .OfType<ObjectCreationExpressionSyntax>());
            }

            return objectCreations;
        }