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

            ArrayVariableDeclarationExpression otherVariableDeclarationExpression = other as ArrayVariableDeclarationExpression;

            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 VisitArrayVariableDeclarationExpression(ArrayVariableDeclarationExpression node)
		{
			Visit(node.Variable);
		}
		public override void VisitArrayVariableDeclarationExpression(ArrayVariableDeclarationExpression node)
		{
			if ((node.Variable.Variable.VariableType.IsOptionalModifier || node.Variable.Variable.VariableType.IsRequiredModifier) && !this.isWritingComment)
			{
				StartWritingComment();
				VisitVariableDeclarationExpression(node.Variable);
				EndWritingComment();
				WriteLine();
			}

			WriteDim();
			
			string variableName = GetVariableName(node.Variable.Variable);
			Write(variableName);

            WriteArrayDimensions(node.Dimensions, node.ArrayType, node.HasInitializer);
			WriteAsBetweenSpaces();
			WriteReferenceAndNamespaceIfInCollision(GetBaseElementType(node.ArrayType));
		}
 public virtual void VisitArrayVariableDeclarationExpression(ArrayVariableDeclarationExpression node)
 {
     Visit(node.Variable);
     Visit(node.Dimensions);
 }