NameSequence := NameOption clone do( option := method(i, i = i % size previous := 0 options foreach(option, size := option size if(i between(previous, previous + size - 1), return option option(i - previous) , previous = previous + size ) ) nil ) size := method( options map(o, o size) sum ) )