Repository: dotnet/roslyn
File: src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs (C#)

Code before:
                        // If the property has a synthesized backing field, record the accessor kind of the property
                        // access for determining whether the property access can use the backing field directly.
                        if (HasSynthesizedBackingField(propertyAccess.PropertySymbol, out _))
                        {
                            expr = propertyAccess.Update(
                                propertyAccess.ReceiverOpt,
                                propertyAccess.InitialBindingReceiverIsSubjectToCloning,
                                propertyAccess.PropertySymbol,
                                autoPropertyAccessorKind: GetAccessorKind(valueKind),
                                propertyAccess.ResultKind,
                                propertyAccess.Type);
                        }
#if DEBUG
                        else
                        {
                            // Under DEBUG, create a new node to mark as checked, rather than mutating the original.
                            // This allows the original node to be passed to CheckValue multiple times safely.
                            expr = propertyAccess.Clone();
                        }
#endif
                    }
#if DEBUG
                    else
                    {
                        // Under DEBUG, create a new node to mark as checked, rather than mutating the original.
                        // This allows the original node to be passed to CheckValue multiple times safely.
                        expr = propertyAccess.Clone();
                    }
                    expr.WasPropertyBackingFieldAccessChecked = true;
#endif
                    break;

                case BoundKind.IndexerAccess:
                    expr = BindIndexerDefaultArgumentsAndParamsCollection((BoundIndexerAccess)expr, valueKind, diagnostics);
                    break;

                case BoundKind.ImplicitIndexerAccess:
                    {
                        var implicitIndexer = (BoundImplicitIndexerAccess)expr;
                        if (implicitIndexer.IndexerOrSliceAccess is BoundIndexerAccess indexerAccess)
                        {
                            var kind = GetIndexerAccessorKind(indexerAccess, valueKind);
                            expr = implicitIndexer.Update(
                                implicitIndexer.Receiver,
                                implicitIndexer.Argument,
                                implicitIndexer.LengthOrCountAccess,
                                implicitIndexer.ReceiverPlaceholder,
                                indexerAccess.Update(kind),
                                implicitIndexer.ArgumentPlaceholders,
                                implicitIndexer.Type);
                        }

Review comment (suggestion):
>to mark as checked [](http://example.com/codeflow?start=58&length=18)

Similar suggestion #Closed

Code after:
                        // If the property has a synthesized backing field, record the accessor kind of the property
                        // access for determining whether the property access can use the backing field directly.
                        if (HasSynthesizedBackingField(propertyAccess.PropertySymbol, out _))
                        {
                            expr = propertyAccess.Update(
                                propertyAccess.ReceiverOpt,
                                propertyAccess.InitialBindingReceiverIsSubjectToCloning,
                                propertyAccess.PropertySymbol,
                                autoPropertyAccessorKind: GetAccessorKind(valueKind),
                                propertyAccess.ResultKind,
                                propertyAccess.Type);
                        }
#if DEBUG
                        else
                        {
                            // Under DEBUG, create a new node to mark as checked, rather than mutating the original.
                            // This allows the original node to be passed to CheckValue multiple times safely, without
                            // asserting in WasPropertyBackingFieldAccessChecked.
                            expr = propertyAccess.Clone();
                        }
#endif
                    }
#if DEBUG
                    else
                    {
                        // Under DEBUG, create a new node to mark as checked, rather than mutating the original.
                        // This allows the original node to be passed to CheckValue multiple times safely, without
                        // asserting in WasPropertyBackingFieldAccessChecked.
                        expr = propertyAccess.Clone();
                    }
                    expr.WasPropertyBackingFieldAccessChecked = true;
#endif
                    break;

                case BoundKind.IndexerAccess:
                    expr = BindIndexerDefaultArgumentsAndParamsCollection((BoundIndexerAccess)expr, valueKind, diagnostics);
                    break;

                case BoundKind.ImplicitIndexerAccess:
                    {
                        var implicitIndexer = (BoundImplicitIndexerAccess)expr;
                        if (implicitIndexer.IndexerOrSliceAccess is BoundIndexerAccess indexerAccess)
                        {
                            var kind = GetIndexerAccessorKind(indexerAccess, valueKind);
                            expr = implicitIndexer.Update(
                                implicitIndexer.Receiver,
                                implicitIndexer.Argument,
                                implicitIndexer.LengthOrCountAccess,
                                implicitIndexer.ReceiverPlaceholder,
                                indexerAccess.Update(kind),
                                implicitIndexer.ArgumentPlaceholders,