public override bool Equals(Expression other)
        {
            AutoPropertyConstructorInitializerExpression expression = other as AutoPropertyConstructorInitializerExpression;

            if (expression == null)
            {
                return(false);
            }

            if (this.Target == null)
            {
                if (expression.Target != null)
                {
                    return(false);
                }
            }
            else if (!this.Target.Equals(expression.Target))
            {
                return(false);
            }

            return(this.Property.FullName == expression.Property.FullName);
        }
        public override void VisitAutoPropertyConstructorInitializerExpression(AutoPropertyConstructorInitializerExpression node)
        {
            if (node.Target != null)
            {
                if (!(node.Target is ThisReferenceExpression))
                {
                    throw new ArgumentException();
                }

                Visit(node.Target);
            }
            else
            {
                WriteReferenceAndNamespaceIfInCollision(node.Property.DeclaringType);
            }

            WriteToken(".");
            WritePropertyName(node.Property);
        }
 public virtual void VisitAutoPropertyConstructorInitializerExpression(AutoPropertyConstructorInitializerExpression node)
 {
 }
        public override void VisitAutoPropertyConstructorInitializerExpression(AutoPropertyConstructorInitializerExpression node)
        {
            // sanity check
            if (!(node.Target is ThisReferenceExpression))
            {
                throw new ArgumentOutOfRangeException();
            }

            Visit(node.Target);
            WriteToken(".");
            WritePropertyName(node.Property);
        }