```given [A, B](using CanEqual[A, A], CanEqual[B, B]): CanEqual[A ~ B, A ~ B] = CanEqual.derived``` This would allow pattern-based productions to compile in the presence of strict equality. Example: https://github.com/lucproglangcourse/expressions-scala/blob/main/src/main/scala/CombinatorParser.scala