maybe wrap with if (!is_array($values)) {

    if (!is_array($values)) {
        if ($values instanceof Traversable) {
            $values = ArrayUtils::iteratorToArray($values);
        } else if (is_object($values) && method_exists($values, 'toArray')) {
            $values = $values->toArray();
        } else {
            throw new Exception\InvalidArgumentException('PartialLoop helper requires iterable data');
        }
    }