<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_gen_slice(ctx=Bubble(), iterable=[], amount=-1, index=-1):
 """very crude way of slicing a generator"""

    ctx.gbc.say('get_gen_slice', stuff=iterable, verbosity=10)

    i = -1
    # TODO
    # i = 0 #NATURAL INDEX, this will break all features with exports and -p

    if amount > 0:
        if index < 0:
            index = 0
    else:
        for item in iterable:
            i += 1
            item[buts('index')] = i
            ctx.gbc.say('Get gen NO slice:item %d' % i, verbosity=100)
            ctx.gbc.say('Get gen NO slice:a:%d i:%d' %
                        (amount, index), verbosity=100)
            ctx.gbc.say('Get gen NO slice:item', stuff=item, verbosity=1000)
            yield item

    until = index + amount
    if six.PY2:
        sli = xrange(index, until)
    else:
        sli = range(index, until)

    ctx.gbc.say('Get gen slice:range %s' % str(sli), verbosity=1000)

    # TODO: iterable should be empty if not slicing
    # if valid slice ...
    for item in iterable:
        i += 1
        if i in sli:
            ctx.gbc.say('Get gen slice:item %d' % i, verbosity=100)
            ctx.gbc.say('Get gen slice:a:%d i:%d' %
                        (amount, index), verbosity=100)
            ctx.gbc.say('Get gen slice:item', stuff=item, verbosity=1000)
            item[buts('index')] = i
            yield item
        elif i > until:
            break
        else:
            pass