precise_case :: (Codomain dcs ~ t, Codomain (DCs t) ~ t, DT t,
               Partition (DCs t) dcs (DCs t :-: dcs)) =>
  (DCs t :-: dcs -> a) -> t -> (dcs -> a) -> a
precise_case g x f = either f g $ partition $ disband x
precise_case :: (Codomain dcs ~ t, Codomain (DCs t) ~ t, DT t,
               Partition (DCs t) dcs (DCs t :-: dcs)) =>
  (DCs t :-: dcs -> a) -> t -> (dcs -> a) -> a
precise_case g x f = either f g $ partition $ disband x
precise_case g x f = either f g $ partition $ disband x