This line looks fishy. This should call canonical().value(), shouldn't it? Because you don't pull out ``getState`` from ``p`` but from this.