I actually feel the opposite. I think transients should have their own separate protocols. The transient docs say this:

> Transients do not support the persistent interface of the source data structure. assoc, conj etc will all throw exceptions, because transients are not persistent. Thus you cannot accidentally leak a transient into a context requiring a persistent.

Therefore I think the transient protocols should mirror the persistent protocols, but always have a bang in their method names to signify mutation.

```clojure
(defprotocol ITransientCollection
   (-conj! [this value])
```