finagle / featherbed

Asynchronous Scala HTTP client using Finagle, Shapeless and Cats
Apache License 2.0
137 stars 25 forks source link

In order to decode a request to T, it must be known that a decoder exists to T from #78

Closed prayagupa closed 6 years ago

prayagupa commented 6 years ago

Not an issue but help question - I'm following https://finagle.github.io/featherbed/doc/06-building-rest-clients.html to deserialize the response to case class. But I getting error In order to decode a request to com.twitter.finagle.http.Response, it must be known that a decoder exists to com.twitter.finagle.http.Response from.

1) The doc https://finagle.github.io/featherbed/doc/04-response-decoding-and-validation.html clearly says To specify that a response should be decoded, use the send[T] method to initiate the request:


import java.net.URL

import com.twitter.finagle.http.Response
import featherbed.circe._
import io.circe.generic.auto._

import scala.concurrent.{Future, Promise}
import com.twitter.util.{
  Return,
  Throw,
  Future => TwitterFuture,
  Try => TwitterTry
}
import io.finch.syntax.scalaFutures._

import scala.util.{Failure, Success, Try}

object HttpClient {

  implicit def twitterToScalaTry[T](t: TwitterTry[T]): Try[T] = t match {
    case Return(r) => Success(r)
    case Throw(ex) => Failure(ex)
  }

  implicit def twitterToScalaFuture[T](tf: TwitterFuture[T]): Future[T] = {
    val scalaPromise = Promise[T]()
    tf.respond(t => scalaPromise.complete(t))
    scalaPromise.future
  }

}

abstract class HttpClient(baseResourceLocator: String) {
  val httpClient = new featherbed.Client(new URL(baseResourceLocator))
}

http client example;

class CustomerHttpClient(baseResourceLocator: String)
  extends HttpClient(baseResourceLocator) {

  import HttpClient._

  val heartbeatEndpoint = httpClient.get("heartbeat").accept("application/json")

  private val validationEndpoint =
    (userToken: String, accessToken: String) =>
      httpClient
        .get(s"/bestbuy/online/users/$userToken")
        .withHeader("access_token", accessToken)

  def heartbeat: Future[Response] = heartbeatEndpoint.send[Response]()

  def customerIsValid: (String, String) => Future[Response] =
    (userToken: String, accessToken: String) =>
      validationEndpoint(userToken, accessToken)
        .accept("application/json")
        .send[Response]()
}

Error

[error] /Users/prayagupd/duwamish-os/chat-server/chatServerApi/src/main/scala/com/duwamish/client/CustomerHttpClient.scala:59: In order to decode a request to com.twitter.finagle.http.Response, it must be known that a decoder exists to com.twitter.finagle.http.Response from
[error] all the content types that you Accept, which is currently AcceptTypes.
[error] You may have forgotten to specify Accept types with the `accept(..)` method,
[error] or you may be missing Decoder instances for some content types.
[error]       .send[Response]()
[error]                      ^

2) Also used val heartbeatEndpoint = httpClient.get("heartbeat").accept(Coproduct."application/json") does not work.

screen shot 2018-04-30 at 10 55 49 pm

3) I randomly added import featherbed.support.DecodeAll._ as well as I see send function expects it; but does not solve the problem.

    def send[K]()(implicit
      canBuild: CanBuildRequest[GetRequest[Accept]],
      decodeAll: DecodeAll[K, Accept]
    ): Future[K] = sendRequest[K](canBuild, decodeAll)

Similar to https://github.com/finagle/featherbed/issues/70 but does not help.

Thanks.

prayagupa commented 6 years ago

Ok, seems I must provide case class which i want to deserialize to. I was thinking there would be default deserialization object. Following code from Documentation is helpful - https://github.com/duwamish-os/chat-server-api-client/blob/master/src/main/scala/ChatServerClient.scala.

FIX

1) add .accept always after .withHeader 2) deserialised to actual case class not finagle.http.Response 2) added "io.circe" %% "circe-java8" % "0.9.3" to enable decoding to OffsetDateTime and import as below,

import io.circe.java8.time._

Now for some reason, I get StackOverflowError somewhere around at io.circe.generic.Deriver.deriveDecoder(Deriver.scala:14). I'm using scala 2.12.5

java.lang.StackOverflowError
    at scala.collection.AbstractIterable.<init>(Iterable.scala:54)
    at scala.collection.AbstractSeq.<init>(Seq.scala:41)
    at scala.collection.immutable.List.<init>(List.scala:86)
    at scala.collection.immutable.$colon$colon.<init>(List.scala:447)
    at scala.collection.mutable.ListBuffer.$plus$eq(ListBuffer.scala:173)
    at scala.collection.mutable.ListBuffer.$plus$eq(ListBuffer.scala:44)
    at scala.collection.generic.Growable.loop$1(Growable.scala:53)
    at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:58)
    at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:50)
    at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:186)
    at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:44)
    at scala.collection.generic.GenericTraversableTemplate.$anonfun$flatten$1(GenericTraversableTemplate.scala:172)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at scala.collection.generic.GenericTraversableTemplate.flatten(GenericTraversableTemplate.scala:171)
    at scala.collection.generic.GenericTraversableTemplate.flatten$(GenericTraversableTemplate.scala:169)
    at scala.collection.AbstractTraversable.flatten(Traversable.scala:104)
    at scala.tools.nsc.typechecker.Macros.calculateMacroArgs$1(Macros.scala:496)
    at scala.tools.nsc.typechecker.Macros.standardMacroArgs(Macros.scala:522)
    at scala.tools.nsc.typechecker.Macros.standardMacroArgs$(Macros.scala:418)
    at scala.tools.nsc.Global$$anon$1.standardMacroArgs(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$13.default(AnalyzerPlugins.scala:440)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$13.default(AnalyzerPlugins.scala:437)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroArgs(AnalyzerPlugins.scala:437)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroArgs$(AnalyzerPlugins.scala:437)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroArgs(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroArgs(Macros.scala:413)
    at scala.tools.nsc.typechecker.Macros.macroArgs$(Macros.scala:413)
    at scala.tools.nsc.Global$$anon$1.macroArgs(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at shapeless.LazyMacros$DerivationContext$State$.resolveInstance(lazy.scala:304)
    at shapeless.LazyMacros$DerivationContext.resolve0(lazy.scala:431)
    at shapeless.LazyMacros$DerivationContext.resolve(lazy.scala:423)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$2(lazy.scala:507)
    at scala.util.Either$LeftProjection.flatMap(Either.scala:561)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$1(lazy.scala:505)
    at scala.Option.getOrElse(Option.scala:121)
    at shapeless.LazyMacros$DerivationContext.derive(lazy.scala:505)
    at shapeless.LazyMacros$DerivationContext$State$.deriveInstance(lazy.scala:337)
    at shapeless.LazyMacrosCompat.deriveInstance(lazymacros.scala:50)
    at shapeless.LazyMacrosCompat.deriveInstance$(lazymacros.scala:33)
    at shapeless.LazyMacros$.deriveInstance(lazy.scala:582)
    at shapeless.LazyMacros.mkImpl(lazy.scala:216)
    at shapeless.LazyMacros.mkLazyImpl(lazy.scala:203)
    at shapeless.LazyMacrosRef.mkLazyImpl(lazyref.scala:34)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5654)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$4(Typers.scala:26)
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:700)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$3(Typers.scala:26)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$2(Typers.scala:26)
    at scala.reflect.macros.contexts.Typers.doTypecheck$1(Typers.scala:25)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$7(Typers.scala:38)
    at scala.reflect.internal.Trees.wrappingIntoTerm(Trees.scala:1731)
    at scala.reflect.internal.Trees.wrappingIntoTerm$(Trees.scala:1728)
    at scala.reflect.internal.SymbolTable.wrappingIntoTerm(SymbolTable.scala:18)
    at scala.reflect.macros.contexts.Typers.typecheck(Typers.scala:38)
    at scala.reflect.macros.contexts.Typers.typecheck$(Typers.scala:20)
    at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
    at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
    at io.circe.generic.util.macros.ExportMacros.exportDecoder(ExportMacros.scala:20)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5654)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3290)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:477)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgWithFormal$1(PatternTypers.scala:108)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.$anonfun$typedArgsForFormals$4(PatternTypers.scala:122)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgsForFormals(PatternTypers.scala:122)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgsForFormals$(PatternTypers.scala:103)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:111)
    at scala.tools.nsc.typechecker.Typers$Typer.handleMonomorphicCall$1(Typers.scala:3635)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$31(Typers.scala:3661)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3661)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4773)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4801)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5586)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5640)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at io.circe.generic.util.macros.DerivationMacros.resolveInstance(DerivationMacros.scala:170)
    at io.circe.generic.util.macros.DerivationMacros.$anonfun$coproductDecoderParts$1(DerivationMacros.scala:224)
    at io.circe.generic.util.macros.DerivationMacros$Members.$anonfun$fold$1(DerivationMacros.scala:85)
    at scala.collection.immutable.List.$anonfun$foldRight$1(List.scala:405)
    at scala.collection.immutable.List.foldRight(List.scala:86)
    at io.circe.generic.util.macros.DerivationMacros$Members.fold(DerivationMacros.scala:78)
    at io.circe.generic.util.macros.DerivationMacros.coproductDecoderParts(DerivationMacros.scala:225)
    at io.circe.generic.util.macros.DerivationMacros.constructDecoder(DerivationMacros.scala:255)
    at io.circe.generic.Deriver.deriveDecoder(Deriver.scala:14)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at shapeless.LazyMacros$DerivationContext$State$.resolveInstance(lazy.scala:304)
    at shapeless.LazyMacros$DerivationContext.resolve0(lazy.scala:431)
    at shapeless.LazyMacros$DerivationContext.resolve(lazy.scala:423)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$2(lazy.scala:507)
    at scala.util.Either$LeftProjection.flatMap(Either.scala:561)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$1(lazy.scala:505)
    at scala.Option.getOrElse(Option.scala:121)
    at shapeless.LazyMacros$DerivationContext.derive(lazy.scala:505)
    at shapeless.LazyMacros$DerivationContext$State$.deriveInstance(lazy.scala:337)
    at shapeless.LazyMacrosCompat.deriveInstance(lazymacros.scala:50)
    at shapeless.LazyMacrosCompat.deriveInstance$(lazymacros.scala:33)
    at shapeless.LazyMacros$.deriveInstance(lazy.scala:582)
    at shapeless.LazyMacros.mkImpl(lazy.scala:216)
    at shapeless.LazyMacros.mkLazyImpl(lazy.scala:203)
    at shapeless.LazyMacrosRef.mkLazyImpl(lazyref.scala:34)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at shapeless.LazyMacros$DerivationContext$State$.resolveInstance(lazy.scala:304)
    at shapeless.LazyMacros$DerivationContext.resolve0(lazy.scala:431)
    at shapeless.LazyMacros$DerivationContext.resolve(lazy.scala:423)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$2(lazy.scala:507)
    at scala.util.Either$LeftProjection.flatMap(Either.scala:561)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$1(lazy.scala:505)
    at scala.Option.getOrElse(Option.scala:121)
    at shapeless.LazyMacros$DerivationContext.derive(lazy.scala:505)
    at shapeless.LazyMacros$DerivationContext$State$.deriveInstance(lazy.scala:337)
    at shapeless.LazyMacrosCompat.deriveInstance(lazymacros.scala:50)
    at shapeless.LazyMacrosCompat.deriveInstance$(lazymacros.scala:33)
    at shapeless.LazyMacros$.deriveInstance(lazy.scala:582)
    at shapeless.LazyMacros.mkImpl(lazy.scala:216)
    at shapeless.LazyMacros.mkLazyImpl(lazy.scala:203)
    at shapeless.LazyMacrosRef.mkLazyImpl(lazyref.scala:34)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5654)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$4(Typers.scala:26)
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:700)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$3(Typers.scala:26)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$2(Typers.scala:26)
    at scala.reflect.macros.contexts.Typers.doTypecheck$1(Typers.scala:25)
    at scala.reflect.macros.contexts.Typers.$anonfun$typecheck$7(Typers.scala:38)
    at scala.reflect.internal.Trees.wrappingIntoTerm(Trees.scala:1731)
    at scala.reflect.internal.Trees.wrappingIntoTerm$(Trees.scala:1728)
    at scala.reflect.internal.SymbolTable.wrappingIntoTerm(SymbolTable.scala:18)
    at scala.reflect.macros.contexts.Typers.typecheck(Typers.scala:38)
    at scala.reflect.macros.contexts.Typers.typecheck$(Typers.scala:20)
    at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
    at scala.reflect.macros.contexts.Context.typecheck(Context.scala:6)
    at io.circe.generic.util.macros.ExportMacros.exportDecoder(ExportMacros.scala:20)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5654)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedArg$1(Typers.scala:3290)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:477)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgWithFormal$1(PatternTypers.scala:108)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.$anonfun$typedArgsForFormals$4(PatternTypers.scala:122)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgsForFormals(PatternTypers.scala:122)
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper.typedArgsForFormals$(PatternTypers.scala:103)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:111)
    at scala.tools.nsc.typechecker.Typers$Typer.handleMonomorphicCall$1(Typers.scala:3635)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$doTypedApply$31(Typers.scala:3661)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3661)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4773)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4801)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5586)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5640)
    at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5672)
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5613)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5618)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at io.circe.generic.util.macros.DerivationMacros.resolveInstance(DerivationMacros.scala:170)
    at io.circe.generic.util.macros.DerivationMacros.$anonfun$hlistDecoderParts$1(DerivationMacros.scala:183)
    at io.circe.generic.util.macros.DerivationMacros$Members.$anonfun$fold$1(DerivationMacros.scala:85)
    at scala.collection.immutable.List.$anonfun$foldRight$1(List.scala:405)
    at scala.collection.immutable.List.foldRight(List.scala:86)
    at io.circe.generic.util.macros.DerivationMacros$Members.fold(DerivationMacros.scala:78)
    at io.circe.generic.util.macros.DerivationMacros.hlistDecoderParts(DerivationMacros.scala:184)
    at io.circe.generic.util.macros.DerivationMacros.constructDecoder(DerivationMacros.scala:255)
    at io.circe.generic.Deriver.deriveDecoder(Deriver.scala:14)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at shapeless.LazyMacros$DerivationContext$State$.resolveInstance(lazy.scala:304)
    at shapeless.LazyMacros$DerivationContext.resolve0(lazy.scala:431)
    at shapeless.LazyMacros$DerivationContext.resolve(lazy.scala:423)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$2(lazy.scala:507)
    at scala.util.Either$LeftProjection.flatMap(Either.scala:561)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$1(lazy.scala:505)
    at scala.Option.getOrElse(Option.scala:121)
    at shapeless.LazyMacros$DerivationContext.derive(lazy.scala:505)
    at shapeless.LazyMacros$DerivationContext$State$.deriveInstance(lazy.scala:337)
    at shapeless.LazyMacrosCompat.deriveInstance(lazymacros.scala:50)
    at shapeless.LazyMacrosCompat.deriveInstance$(lazymacros.scala:33)
    at shapeless.LazyMacros$.deriveInstance(lazy.scala:582)
    at shapeless.LazyMacros.mkImpl(lazy.scala:216)
    at shapeless.LazyMacros.mkLazyImpl(lazy.scala:203)
    at shapeless.LazyMacrosRef.mkLazyImpl(lazyref.scala:34)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1171)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1231)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1204)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor(Implicits.scala:40)
    at scala.tools.nsc.typechecker.Implicits.inferImplicitFor$(Implicits.scala:39)
    at scala.tools.nsc.Global$$anon$1.inferImplicitFor(Global.scala:448)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$applyImplicitArgs$2(Typers.scala:172)
    at scala.tools.nsc.typechecker.Typers$Typer.applyImplicitArgs(Typers.scala:165)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$1(Typers.scala:889)
    at scala.tools.nsc.typechecker.Typers$Typer.adaptToImplicitMethod$1(Typers.scala:477)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1224)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit1(Implicits.scala:706)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.typedImplicit0(Implicits.scala:643)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.scala$tools$nsc$typechecker$Implicits$ImplicitSearch$$typedImplicit(Implicits.scala:511)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.rankImplicits(Implicits.scala:964)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch$ImplicitComputation.findBest(Implicits.scala:992)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1049)
    at scala.tools.nsc.typechecker.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1445)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:95)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:82)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.tools.nsc.typechecker.Implicits.$anonfun$inferImplicit$3(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit(Implicits.scala:127)
    at scala.tools.nsc.typechecker.Implicits.inferImplicit$(Implicits.scala:125)
    at scala.tools.nsc.Global$$anon$1.inferImplicit(Global.scala:448)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue(Typers.scala:44)
    at scala.reflect.macros.contexts.Typers.inferImplicitValue$(Typers.scala:42)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at scala.reflect.macros.contexts.Context.inferImplicitValue(Context.scala:6)
    at shapeless.LazyMacros$DerivationContext$State$.resolveInstance(lazy.scala:304)
    at shapeless.LazyMacros$DerivationContext.resolve0(lazy.scala:431)
    at shapeless.LazyMacros$DerivationContext.resolve(lazy.scala:423)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$2(lazy.scala:507)
    at scala.util.Either$LeftProjection.flatMap(Either.scala:561)
    at shapeless.LazyMacros$DerivationContext.$anonfun$derive$1(lazy.scala:505)
    at scala.Option.getOrElse(Option.scala:121)
    at shapeless.LazyMacros$DerivationContext.derive(lazy.scala:505)
    at shapeless.LazyMacros$DerivationContext$State$.deriveInstance(lazy.scala:337)
    at shapeless.LazyMacrosCompat.deriveInstance(lazymacros.scala:50)
    at shapeless.LazyMacrosCompat.deriveInstance$(lazymacros.scala:33)
    at shapeless.LazyMacros$.deriveInstance(lazy.scala:582)
    at shapeless.LazyMacros.mkImpl(lazy.scala:216)
    at shapeless.LazyMacros.mkLazyImpl(lazy.scala:203)
    at shapeless.LazyMacrosRef.mkLazyImpl(lazyref.scala:34)
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at scala.reflect.macros.runtime.JavaReflectionRuntimes$JavaReflectionResolvers.$anonfun$resolveJavaReflectionRuntime$4(JavaReflectionRuntimes.scala:34)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:792)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:931)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:939)
    at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:920)
    at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:777)
    at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:768)
    at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:609)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.Global$$anon$1.pluginsMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:746)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:746)
    at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:736)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:623)
    at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:602)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:589)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:753)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:751)
    at scala.tools.nsc.Global$$anon$1.standardMacroExpand(Global.scala:448)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:432)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$12.default(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:401)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:429)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:429)
[error] (chatServerApi/compile:compileIncremental) java.lang.StackOverflowError
[error] Total time: 30 s, completed May 1, 2018 1:35:17 PM
prayagupa commented 6 years ago

ended up dropping featherbed as decoding json response with 100+ fields with hyphanated keys was hard with circe decoder.

Used sttp and plain Jackson Mapper with @JsonProperty annotation.