private static PropertyDeclarationSyntax MakeInterfaceProperty(PropertyDeclarationSyntax propertySyntax)
        {
            var accessors = propertySyntax.AccessorList.Accessors.Select(f => MakeInterfaceAccessor(f));
            var syntaxList = new SyntaxList<AccessorDeclarationSyntax>();
            syntaxList = syntaxList.AddRange(accessors);

            var accessorList = propertySyntax.AccessorList.WithAccessors(syntaxList);

            return propertySyntax.WithModifiers(new SyntaxTokenList()).WithAccessorList(accessorList);
        }
 private static PropertyDeclarationSyntax CreatePropertyWithCorrectAccessibility(PropertyDeclarationSyntax property, IFieldSymbol fieldSymbol, IPropertySymbol propertySymbol)
 {
     if (IsExplicityImplementation(propertySymbol))
         return property;
     var existingModifiers = property.Modifiers.Where(m =>
     {
         var modifierText = m.ValueText;
         return modifierText != "private"
             && modifierText != "protected"
             && modifierText != "public"
             && modifierText != "internal";
     });
     var newAccessibilityModifiers = propertySymbol.DeclaredAccessibility
         .GetMinimumCommonAccessibility(fieldSymbol.DeclaredAccessibility)
         .GetTokens()
         .Aggregate(existingModifiers, (ts, t) =>
             ts.Any(tt => tt.ValueText == t.ValueText) ? ts : ts.Union(new[] { t }).ToArray())
         .OrderBy(t => t.ValueText);
     var newProperty = property.WithModifiers(SyntaxFactory.TokenList(newAccessibilityModifiers));
     return newProperty;
 }
		/// <summary>
		///   Normalizes the <paramref name="declaration" />.
		/// </summary>
		public override SyntaxNode VisitPropertyDeclaration(PropertyDeclarationSyntax declaration)
		{
			var propertySymbol = declaration.GetPropertySymbol(SemanticModel);
			if (!propertySymbol.ContainingType.IsComponent(SemanticModel) || !propertySymbol.IsExtern)
				return declaration;

			var originalDeclaration = declaration;
			var index = declaration.Modifiers.IndexOf(SyntaxKind.ExternKeyword);
			declaration = declaration.WithModifiers(declaration.Modifiers.RemoveAt(index)).WithSemicolonToken(default(SyntaxToken));

			var accessors = SyntaxFactory.List(NormalizerAccessors(originalDeclaration.AccessorList.Accessors));
			return declaration.WithAccessorList(declaration.AccessorList.WithAccessors(accessors)).EnsureLineCount(originalDeclaration);
		}