code: public function getIterator()
      {
          $value = $this->getValue();
          if ($value instanceof QueryInterface) {
              throw new InvalidConfigException('The ArrayExpression class can not be iterated when the value is a QueryInterface object');
          }
          if ($value === null) {
              $value = [];
          }
  
          return new \ArrayIterator($value);
      }
docs: Retrieve an external iterator
  
  @link https://secure.php.net/manual/en/iteratoraggregate.getiterator.php
  @return Traversable An instance of an object implementing <b>Iterator</b> or
  <b>Traversable</b>
  @since 2.0.14.1
  @throws InvalidConfigException when ArrayExpression contains QueryInterface object