I'm pretty happy how that turned out. The `TC` parameter abstracts over the "capability" a type class has to offer to support a derivation. For example, the ADT

```scala
case class Bippy(x: Int)
```

only needs a `TypeClass` (hence supporting `Monoid`, ...). OTOH,

```scala
trait Foo
case class Bar(...) extends Foo
case class Baz(...) extends Foo
```

needs a `TypeClassWithCoproduct`. When asking for an implicit of type `Deriver[Foo, TypeClass]`, the macro will complain:

    Foo is a multi-case ADT, but coproducts are not supported for this type class