hah, i didn't even know about `Object.getOwnPropertyNames` and `Object.getOwnPropertyDescriptor`