Settled on a maybe tolerable way to deal with equals/eq/Eq.
Pressed eq/equals/Eq changes through to the end.

Surprisingly it seems to be working out.

scala> final case class Bippy(x: Int)
defined class Bippy

scala> Direct(Bippy(5), Bippy(5)).byEquals.distinct >>
Bippy(5)

scala> Direct(Bippy(5), Bippy(5)).byRef.distinct >>
Bippy(5)
Bippy(5)

scala> Direct(Bippy(5), Bippy(5)).distinct
<console>:39: error: could not find implicit value for parameter z: psp.std.api.HashEq[Bippy]
              Direct(Bippy(5), Bippy(5)).distinct
                                         ^

scala> Direct(Bippy(5), Bippy(5)).byEquals contains Bippy(5)
res10: psp.std.Boolean = true

scala> Direct(Bippy(5), Bippy(5)).byRef contains Bippy(5)
res11: psp.std.Boolean = false

scala> Direct(Bippy(5), Bippy(5)) contains Bippy(5)
<console>:39: error: could not find implicit value for parameter z: psp.std.api.Eq[Bippy]
              Direct(Bippy(5), Bippy(5)) contains Bippy(5)
                                         ^