@SuppressWarnings("unused")
        public <I extends Tuple3<I1, I2, I3>, I1, I2, I3> InputBuilder<I> withInputTypes(
                @SuppressWarnings("unused") final Class<I1> input1Type,
                @SuppressWarnings("unused") final Class<I2> input2Type,
                @SuppressWarnings("unused") final Class<I3> input3Type) {

            @SuppressWarnings("unchecked") final TypeLiteral<I> typeLiteral =
                    (TypeLiteral<I>) new TypeLiteral<Tuple3<I1, I2, I3>>() {
                    };

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