What you're proposing as for an 'is_readonly()' won't work. The code specifically sets __metatable=false so that the the metatable cannot be read or written. This is to prevent the readonly metamethods form being removed and thus making this back into a non-readonly table. So an is_readonly() cannot read the metatable of the table to determine if the readonly metatable is set.