public override bool Equals(Expression other)
        {
            if (!(other is ArrayVariableReferenceExpression))
            {
                return(false);
            }

            ArrayVariableReferenceExpression otherVariableDeclarationExpression = other as ArrayVariableReferenceExpression;

            if (!this.Variable.Equals(otherVariableDeclarationExpression.Variable))
            {
                return(false);
            }

            if (this.ArrayType.FullName != otherVariableDeclarationExpression.ArrayType.FullName)
            {
                return(false);
            }

            if (!this.Dimensions.Equals(otherVariableDeclarationExpression.Dimensions))
            {
                return(false);
            }

            if (this.HasInitializer != otherVariableDeclarationExpression.HasInitializer)
            {
                return(false);
            }

            return(true);
        }
		public override void VisitArrayAssignmentVariableReferenceExpression(ArrayVariableReferenceExpression node)
		{
			Visit(node.Variable);
		}
		public override void VisitArrayAssignmentVariableReferenceExpression(ArrayVariableReferenceExpression node)
		{
			if (!node.HasInitializer)
			{
				WriteKeyword(KeyWordWriter.ReDim);
				WriteSpace();
			}

			Visit(node.Variable);

			if (!node.HasInitializer)
			{
				WriteArrayDimensions(node.Dimensions, node.ArrayType, node.HasInitializer);
			}
		}
 public virtual void VisitArrayAssignmentVariableReferenceExpression(ArrayVariableReferenceExpression node)
 {
     Visit(node.Variable);
     Visit(node.Dimensions);
 }