Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to bytes.pbTo[CaseClassWithMoreThan22Columns]? #23

Open
wpoosanguansit opened this issue Sep 20, 2018 · 8 comments
Open

How to bytes.pbTo[CaseClassWithMoreThan22Columns]? #23

wpoosanguansit opened this issue Sep 20, 2018 · 8 comments

Comments

@wpoosanguansit
Copy link

When I do have to serialize and deserialize case class with more than 22 columns, it just complains that there is no implicit defined. Is there a way around this? Thanks for your help.

@btlines
Copy link
Owner

btlines commented Sep 20, 2018

I doubt that the number of field is the problem here. I think that you have one (or several) fields that are not serialisable (from pbdirect's perspective at least).

@wpoosanguansit
Copy link
Author

All of the fields in my case class are of String, Long, Int and Double. Let me try removing again a few of them at a time to see if the 22 columns limit is it. Thanks.

@wpoosanguansit
Copy link
Author

wpoosanguansit commented Sep 21, 2018

It turns out to be not the number of columns as you suspect. I do have this:

import cats.instances.list._
  import cats.instances.option._
  import pbdirect._

  final case class Record(val one: String, val two: Int, val thee: Int, val four: Int, val five: Int, val six: Long, val seven: String, val eight: String, val nine: String, val ten: String, val eleven: String, val twelve: String, val thirteen: Int, val fourteen: String, val fifteen: String, val sixteen: String, val seventeen: String, val srcPort: String, val dstPort: String, val appProtocol: String, val tUlBytes: Long, val tDlBytes: Long, val startTimeEpoch: Long, val endTimeEpoch: Long, val eighteen: Long, val nineteen: Long, val twenty: String, val twentyone: String, val twentytwo: Int, val twentythree: String, val twentyfour: String) //, val twentyfive: String, val twentysix: String, val twentyseven: String, val twentyeight: Int, val twentynine: Int, val thirty: String, val thiryone: Int) //, val thirtytwo : String, val thirtythree : String, val thirtyfour : String, val thirtyfive : String, val thirtysix : String, val thirtyseven : Int, val thirtyeight : Int, val ipServerIpAddress : String, val ipProtocol : Int, val ipSrcAddress : String, val snChargeVolumeIpBytesDownlink : Int, val snChargeVolumeIpBytesUplink : Int, val thirtynine : Int, val fourty : String, val fourtyone : String, val fourtytwo : String, val fourtythree : String, val fourtyfour : String, val fourtyfive : Int, val fourtysix : String, val fourtyseven : String, val fourtyeight : Int, val fourtynine : Int, val fivety : Int, val fivetyone : Int, val fivetytwo : String, val fivetythree : String, val fivefour : String, val fivetyfive : String, val fivetysix : String, val fivetyseven : String, val fivetyeight : String, val fivetynine : String, val sixty : Double, val sixtyone : Double, val sixtwo : String, val sixtythree : String, val sixtyfour : String, val sixtyfive : String, val sixtysix : String, val sixtysevent : String)

  val temp = new Record("", 0, 0, 0, 0, 0L, "", "", "", "", "", "", 0, "", "", "", "", "", "", "", 0L, 0L, 0L, 0L, 0L, 0L, "", "", 0, "", "") //, "", "", "", 0, 0, "", 0) //, "0", "", "", "", "", 0, 0, "", 0, "", 0, 0, 0, "", "", "", "", "", 0, "", "", 0, 0, 0, 0, "", "", "", "", "", "", "", "", 0.0, 0.0, "", "", "", "", "", "")
  val bytes = temp.toPB

  val message = bytes.pbTo[Record]

i do get stackoverflow error when i have 31 fields:

Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException
java.lang.StackOverflowError
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:102)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:297)
	at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:295)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:111)
	at scala.reflect.internal.tpe.TypeMaps$FindTypeCollector.traverse(TypeMaps.scala:1112)
	at scala.reflect.internal.tpe.TypeMaps$TypeCollector.collect(TypeMaps.scala:309)
	at scala.reflect.internal.Types$Type.find(Types.scala:784)
	at scala.reflect.internal.Types$Type.exists(Types.scala:798)
	at scala.reflect.internal.Types$TypeVar.isRelatable(Types.scala:3317)
	at scala.reflect.internal.Types$TypeVar.registerBound(Types.scala:3265)
	at scala.reflect.internal.tpe.TypeComparers.firstTry$1(TypeComparers.scala:471)
	at scala.reflect.internal.tpe.TypeComparers.isSubType2(TypeComparers.scala:594)
	at scala.reflect.internal.tpe.TypeComparers.isSubType1(TypeComparers.scala:332)
	at scala.reflect.internal.tpe.TypeComparers.isSubType(TypeComparers.scala:290)
	at scala.reflect.internal.tpe.TypeComparers.isSubType$(TypeComparers.scala:252)
	at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:18)
	at scala.reflect.internal.Types.isSubArg$1(Types.scala:4222)
	at scala.reflect.internal.Types.$anonfun$isSubArgs$2(Types.scala:4226)
	at scala.reflect.internal.Types.isSubArgs(Types.scala:4226)
	at scala.reflect.internal.Types.isSubArgs$(Types.scala:4220)
	at scala.reflect.internal.SymbolTable.isSubArgs(SymbolTable.scala:18)
	at scala.reflect.internal.tpe.TypeComparers.firstTry$1(TypeComparers.scala:448)
	at scala.reflect.internal.tpe.TypeComparers.isSubType2(TypeComparers.scala:594)
	at scala.reflect.internal.tpe.TypeComparers.isSubType1(TypeComparers.scala:332)
	at scala.reflect.internal.tpe.TypeComparers.isSubType(TypeComparers.scala:290)
	at scala.reflect.internal.tpe.TypeComparers.isSubType$(TypeComparers.scala:252)
	at scala.reflect.internal.SymbolTable.isSubType(SymbolTable.scala:18)
	at scala.reflect.internal.tpe.TypeComparers.isWeakSubType(TypeComparers.scala:617)
	at scala.reflect.internal.tpe.TypeComparers.isWeakSubType$(TypeComparers.scala:598)
	at scala.reflect.internal.SymbolTable.isWeakSubType(SymbolTable.scala:18)
	at scala.reflect.internal.Types$Type.weak_$less$colon$less(Types.scala:855)
	at scala.tools.nsc.typechecker.Infer$Inferencer.isCompatible(Infer.scala:307)
	at scala.tools.nsc.typechecker.Infer$Inferencer.conforms$1(Infer.scala:364)
	at scala.tools.nsc.typechecker.Infer$Inferencer.exprTypeArgs(Infer.scala:374)
	at scala.tools.nsc.typechecker.Infer$Inferencer.inferExprInstance(Infer.scala:927)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:746)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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.GeneratedMethodAccessor39.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:803)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$$anon$4.transform(Macros.scala:942)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll(Macros.scala:950)
	at scala.tools.nsc.typechecker.Macros.macroExpandAll$(Macros.scala:931)
	at scala.tools.nsc.Global$$anon$1.macroExpandAll(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime(Macros.scala:788)
	at scala.tools.nsc.typechecker.Macros.macroExpandWithRuntime$(Macros.scala:779)
	at scala.tools.nsc.Global$$anon$1.macroExpandWithRuntime(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:620)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	at scala.tools.nsc.Global$$anon$1.macroExpand(Global.scala:448)
	at scala.tools.nsc.typechecker.Macros$DefMacroExpander.onDelayed(Macros.scala:747)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.$anonfun$expand$1(Macros.scala:634)
	at scala.tools.nsc.Global.withInfoLevel(Global.scala:219)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:613)
	at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:600)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:764)
	at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:762)
	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:757)
	at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:757)
	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)

@wpoosanguansit
Copy link
Author

I am using scala 2.12.6 and I do have eight gigs for my Intellij. Thanks for your help.

@wpoosanguansit
Copy link
Author

@btlines is there any chance you have looked at this error? Thanks for your help.

@btlines
Copy link
Owner

btlines commented Oct 17, 2018

Sorry for the late reply but I'm struggling to keep up with all these projects.
This error occurs at compile time when the compiler performs the implicit resolution.
I don't think there is a way to get around this stackoverflow issue because it's just how the compiler works.
That being said there's probably a way to improve things a bit. At the moment the implicit resolution is done field by field (hence the stackoverflow error). If we do it X fields by X fields it should be possible to reduce the number of calls which should give us more room before we hit the stackoverflow.
Hopefully that should be enough to serialize your case class.

@wpoosanguansit
Copy link
Author

Thank you for your help. Can you elaborate on what you think could be done? Let’s say the case class is what I have at the moment. Thanks again.

@btlines
Copy link
Owner

btlines commented Oct 17, 2018

What I mean is that your case class is like a long list of fields and the implicit resolution is resolving these fields one by one:
Something like:

  • Find parser for field 1 and parser for rest of the fields which expands into
  • Find parser for field 2 and parser for rest of the fields which expands into
  • Find parser for field 3 and parser for rest of the fields which expands into ...
    Every time it moves to the next field a new set of calls is added into the callstack.

The idea is that we can resolve several fields into a single phase:

  • Find parser for field 1, 2, 3, 4, 5 and parser for rest of the fields which expands into
  • Find parser for field 6, 7, 8, 9, 10 and parser for rest of the fields which expands into ...
    Now we have 5 times less calls to make which gives us some space before we overflow the stack.

I'll try to create a PR later tonight to see if it works ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants