in bijection-macros/src/main/scala/com/twitter/bijection/macros/impl/TupleUtils.scala [11:24]
def tupleCaseClassEquivalent(tpe: Type): Seq[Tree] =
tpe.declarations.collect {
case m: MethodSymbol if m.isCaseAccessor =>
m.returnType match {
case tpe if IsCaseClassImpl.isCaseClassType(c)(tpe) =>
tupleCaseClassCache.getOrElseUpdate(
tpe, {
val equiv = tupleCaseClassEquivalent(tpe)
AppliedTypeTree(Ident(newTypeName("Tuple" + equiv.size)), equiv.toList)
}
)
case tpe => Ident(tpe.typeSymbol.name.toTypeName)
}
}.toSeq