The companion object of a case class extends FunctionN[ArgTypes..., CaseClass] if and only if:
- you didn't write the companion object yourself (the compiler isn't willing to change the list of parents classes for such a manually written companion)
- the case class doesn't take type parameters.
This is done largely for historical reasons with very early versions of Scala that had a different mechanism for the factory methods.
In all cases, you can convert the `apply` method to a function with:
val function = CallInfo.apply _
or
val function = CallInfo(_)
-jason