Extremely minor quibble: could be using `instancetype`.