public bool MoveNext()
{
if (_firstCall)
{
_firstCall = false;
return _remaining-- > 0 && _en.MoveNext();
}
if (_remaining < 0)
return false;
bool r = _en.MoveNext();
return r && _remaining-- > 0;
}