table.insert already has an optional middle argument, I don't see any
issue there (yeah some people complain about it, but some people
complain about virtually anything).
And as for the naming, every
single function in the table module already deals only with integer
indices, so I don't see the point in renaming copy to icopy. If you
want to rename something, maybe we should rename the table module to