See www.jacobrothstein.com/entries/enumerable-proxy
and
www.jacobrothstein.com/entries/further-enumerable-proxy