Meta classes and typechecks in 100 lines of code for ES5