This “simplifies” the static method definitions on Tag constructors
by giving the constructors themselves private fields and using a method
implementation common to all of them (on their prototype chain), rather
than manually defining each with partial application during initial
constructor generation.
This is also somewhat desirable as it means that the expected situation
of :—
```js
Object.getPrototypeOf(Tag).prototype ==
Object.getPrototypeOf(Object.getPrototypeOf(new Tag))
```
—: is true, which was not formerly the case.