public static <K, V, VO> Joined<K, V, VO> with(final Serde<K> keySerde,
                                                   final Serde<V> valueSerde,
                                                   final Serde<VO> otherValueSerde) {
        return new Joined<>(keySerde, valueSerde, otherValueSerde, null, null);
    }
Create an instance of {@code Joined} with key, value, and otherValue {@link Serde} instances.
{@code null} values are accepted and will be replaced by the default serdes as defined in config.

@param keySerde        the key serde to use. If {@code null} the default key serde from config will be used
@param valueSerde      the value serde to use. If {@code null} the default value serde from config will be used
@param otherValueSerde the otherValue serde to use. If {@code null} the default value serde from config will be used
@param <K>             key type
@param <V>             value type
@param <VO>            other value type
@return new {@code Joined} instance with the provided serdes
streams/src/main/java/org/apache/kafka/streams/kstream/Joined.java