Update dependency versions.
Improve tests.
Use defineProperty instead of defineGetter/defineSetter.