_M must be local to prevent other cross-module pollution
port to Lua 5.2