Kotlin quadruple, quintuple, etc. for destructuring : <p>I am looking for a clean way to create destructurable objects in-line. <code>kotlin.Pair</code> and <code>kotlin.Triple</code> cover a lot of use cases, but sometimes there are more objects that are needed to be passed.</p>

<p>One sample use case is RX's <code>zip</code> function, where the results of several I/O calls need to be mapped into another object:</p>

<pre><code>Single
    .zip(repositoryA.loadData(someId),
         repositoryB.loadData(someId),
         repositoryC.loadAll(),
         repositoryD.loadAll()),
         { objectA, objectB, objectsC, objectsD -&gt; /*some Kotlin magic*/ }
    )
    .map { (objectA, objectB, objectsC, objectsD) -&gt; /*do the mapping*/ }
</code></pre>

<p>I am trying to figure out what would go in the "some Kotlin magic" part. If there were only 3 repositories, it would be</p>

<pre><code>Triple(objectA, objectB, objectsC)
</code></pre>

<p>Do I need to create a new data class for this, and for any n-tuple case, or is there another way?</p>
