No need to declare capture variable and return, or do single-entry/single-return. You can just say:

{
    if (...)
        return iter.next().Obj();
    return cursor._next;
}