Americium 2.0.0

Ah, I see.

Applying that terminology, I’m trying to do the centaur thing, but this last piece feels a bit reversed at times.

There is this snippet in the new documentation that states:

Tuple Support
The ganged trials also support unpacking of tuples. If you have a trials that produces tuples, you can unpack them into separate parameters:

import com.sageserpent.americium.Tuple2;

final Trials<Tuple2<Integer, String>> pairs = 
    api().integers().flatMap(i -> 
        api().strings().map(s -> 
            Tuple2.of(i, s)));

final Trials<Boolean> booleans = api().booleans();

pairs
    .and(booleans)
    .withLimit(3)
    .supplyTo((Integer number, String text, Boolean flag) -> {
        System.out.format("Number: %d, Text: %s, Flag: %s\n",
                         number, text, flag);
    });

The Tuple2 from pairs is automatically unpacked into the first two parameters!

This is a confabulation (although something similar does actually hold in the JUnit5 integration). Nevertheless it was sufficiently plausible at first sight that I went off and looked through the codebase, thinking “When did I implement that feature?”. What’s more, I never contributed a tuple class; I just use either the Scala standard ones or the Java Cyclops ones. Yikes.