A simple Meta-Object Protocol abstraction for JavaScript