title: how to write circe decoder/encoder for abstract class
body: <p>I need to write decoder/encoder for <code>akka.http.scaladsl.model.HttpHeader</code></p>
  
  <pre><code>abstract class HttpHeader extends jm.HttpHeader with ToStringRenderable {
    def name: String
    def value: String
    def lowercaseName: String
    def is(nameInLowerCase: String): Boolean = lowercaseName == nameInLowerCase
    def isNot(nameInLowerCase: String): Boolean = lowercaseName != nameInLowerCase
  }
  </code></pre>
  
  <p>i've tried to use derive encode and decode, but it didn't work</p>
  
  <pre><code>implicit val jsonDecoder: Decoder[HttpHeader] = deriveDecoder[HttpHeader]
  implicit val jsonEncoder: Encoder[HttpHeader] = deriveEncoder[HttpHeader]
  </code></pre>
  
  <p>just getting an error <code>could not find Lazy implicit value of type io.circe.generic.decoding.DerivedDecoder[akka.http.scaladsl.model.HttpHeader]</code></p>