private async Task <Document> AddToAttributePersistingCheckNothing(Document document, TextSpan span, bool isBoundField, CancellationToken cancellationToken)
        {
            SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);

            if (!(root?.FindNode(span) is AttributeSyntax attributeNode))
            {
                return(document);
            }

            if (!(attributeNode.Parent is AttributeListSyntax attributeList))
            {
                return(document);
            }

            cancellationToken.ThrowIfCancellationRequested();

            SyntaxGenerator generator = SyntaxGenerator.GetGenerator(document);

            var memberAccessExpression = generator.MemberAccessExpression(generator.IdentifierName(TypeNames.PXPersistingCheck),
                                                                          generator.IdentifierName(TypeNames.PersistingCheckNothing));
            var persistingAttributeArgument = generator.AttributeArgument(TypeNames.PersistingCheck,
                                                                          memberAccessExpression) as AttributeArgumentSyntax;

            SyntaxNode modifiedRoot;

            if (attributeNode.ArgumentList != null)
            {
                AttributeArgumentSyntax argument = GetArgumentFromAttribute();

                if (argument != null)
                {
                    persistingAttributeArgument = argument.ReplaceNode(argument.Expression, memberAccessExpression);
                    var newAttributeNode = attributeNode.ReplaceNode(argument, persistingAttributeArgument);
                    var newAttributeList = attributeList.ReplaceNode(attributeNode, newAttributeNode);
                    modifiedRoot = root.ReplaceNode(attributeList, newAttributeList);
                }
                else
                {
                    var newAttributeList = generator.AddAttributeArguments(attributeNode, new SyntaxNode[] { persistingAttributeArgument }) as AttributeListSyntax;
                    modifiedRoot = root.ReplaceNode(attributeNode, newAttributeList.Attributes[0]);
                }
            }
            else
            {
                AttributeListSyntax newAttribute = generator.InsertAttributeArguments(attributeNode, 1, new SyntaxNode[] { persistingAttributeArgument }) as AttributeListSyntax;
                modifiedRoot = root.ReplaceNode(attributeNode, newAttribute.Attributes[0]);
            }

            return(document.WithSyntaxRoot(modifiedRoot));

            AttributeArgumentSyntax GetArgumentFromAttribute()
            {
                foreach (AttributeArgumentSyntax _argument in attributeNode.ArgumentList.Arguments)
                {
                    if (_argument.NameEquals != null &&
                        _argument.NameEquals.Name.Identifier.Text.Contains(TypeNames.PersistingCheck))
                    {
                        return(_argument);
                    }
                }
                return(null);
            }
        }