public static function toFoldable($input)
    {
        Arguments::define(Boa::foldable())->check($input);

        if ($input instanceof FoldableInterface) {
            return $input;
        }

        if (is_array($input) || $input instanceof ArrayObject) {
            return static::toList($input);
        }

        throw new CoreException('Unable to build Foldable');
    }