+
+Note [Bottom demands]
+~~~~~~~~~~~~~~~~~~~~~
+Consider
+ f x = error x
+From 'error' itself we get demand Bot on x
+From the arg demand on x we get
+ x :-> evalDmd = Box (Eval (Poly Abs))
+So we get Bot `both` Box (Eval (Poly Abs))
+ = Seq Keep (Poly Bot)
+
+Consider also
+ f x = if ... then error (fst x) else fst x
+Then we get (Eval (Box Bot, Bot) `lub` Eval (SA))
+ = Eval (SA)
+which is what we want.
+
+Consider also
+ f x = error [fst x]
+Then we get
+ x :-> Bot `both` Defer [SA]
+and we want the Bot demand to cancel out the Defer
+so that we get Eval [SA]. Otherwise we'd have the odd
+situation that
+ f x = error (fst x) -- Strictness U(SA)b
+ g x = error ('y':fst x) -- Strictness Tb
+