@SuppressWarnings("unused")
        public <O extends Tuple3<O1, O2, O3>, O1, O2, O3> OutputBuilder<I, O> withOutputTypes(
                @SuppressWarnings("unused") final Class<O1> output1Type,
                @SuppressWarnings("unused") final Class<O2> output2Type,
                @SuppressWarnings("unused") final Class<O3> output3Type) {

            @SuppressWarnings("unchecked") final TypeLiteral<O> typeLiteral =
                    (TypeLiteral<O>) new TypeLiteral<Tuple3<O1, O2, O3>>() {
                    };

            return new OutputBuilder<>(this, typeLiteral);
        }
Define the types of the three outputs for the dynamic tests, e.g.
<pre>{@code withOutputTypes(Integer.class, String.class, Long.class)}</pre>
stroom-test-common/src/main/java/stroom/test/common/DynamicTestBuilder.java