TIterable = Object clone() do (

    #requires(__getitem__, __len__)

    foreach = method(
        x = call message args at(0) name
        code = call message args at(1)
        i = 0
        N = self __len__() - 1
        c = Continuation current()
        (i <= N) ifTrue(
            call sender set(x, self __getitem__(i))
            code eval(call sender)
            i += 1
            c()
        )
        None
    )
)

List uses(TIterable)
Tuple uses(TIterable)
Range uses(TIterable)
