private PropertyTransformationResult TransformProperty(PropertyDeclarationSyntax propertyNode, bool canCopy, PropertyTransformationResult result, ITypeTransformationMetadata typeMetadata, INamespaceTransformationMetadata namespaceMetadata) { var analyzeResult = result.AnalyzationResult; var startRootSpan = analyzeResult.Node.SpanStart; // Calculate whitespace method trivias result.EndOfLineTrivia = propertyNode.GetEndOfLine(); result.LeadingWhitespaceTrivia = propertyNode.GetLeadingWhitespace(); result.IndentTrivia = propertyNode.GetIndent(result.LeadingWhitespaceTrivia, typeMetadata.LeadingWhitespaceTrivia); result.BodyLeadingWhitespaceTrivia = Whitespace(result.LeadingWhitespaceTrivia.ToFullString() + result.IndentTrivia.ToFullString()); if (analyzeResult.Conversion == PropertyConversion.Ignore && analyzeResult.GetAccessors().All(o => o.Conversion == MethodConversion.Ignore)) { return(result); } propertyNode = propertyNode.WithAdditionalAnnotations(new SyntaxAnnotation(result.Annotation)); startRootSpan -= propertyNode.SpanStart; foreach (var accessorResult in analyzeResult.GetAccessors().Where(o => o.Conversion != MethodConversion.Ignore)) { var spanStart = accessorResult.Node.SpanStart - startRootSpan; var spanLength = accessorResult.Node.Span.Length; var accessorNode = propertyNode.DescendantNodes() .First(o => o.SpanStart == spanStart && o.Span.Length == spanLength); var transformedNode = new AccessorTransformationResult(accessorResult); result.TransformedAccessors.Add(transformedNode); propertyNode = propertyNode.ReplaceNode(accessorNode, accessorNode.WithAdditionalAnnotations(new SyntaxAnnotation(transformedNode.Annotation))); } if (canCopy && result.AnalyzationResult.Conversion == PropertyConversion.Copy) { result.Transformed = result.OriginalNode; } foreach (var accessorResult in result.TransformedAccessors.OrderByDescending(o => o.OriginalStartSpan)) { var accessorNode = propertyNode.GetAnnotatedNodes(accessorResult.Annotation) .First(); TransformPropertyAccessor(accessorNode, result, accessorResult, typeMetadata, namespaceMetadata); } return(result); }