I wrote this to intentionally replace every member function, omitting the usual `hasOwnProperty` check, but now I think that's probably over-doing it a bit. We should probably only bother to replace own functions, and remove the JSLint `forin: true` annotation at the top of the file.