public void traverse(ASTVisitor visitor, BlockScope scope) {

    if (visitor.visit(this, scope)) {
      int dimensionsLength = dimensions.length;
      type.traverse(visitor, scope);
      for (int i = 0; i < dimensionsLength; i++) {
        if (dimensions[i] != null) dimensions[i].traverse(visitor, scope);
      }
      if (initializer != null) initializer.traverse(visitor, scope);
    }
    visitor.endVisit(this, scope);
  }