public static <K, V1, V2> StreamJoined<K, V1, V2> as(final String storeName) {
        return new StreamJoined<>(
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            storeName,
            true,
            new HashMap<>()
        );
    }
Creates a {@link StreamJoined} instance using the provided name for the state stores and hence the changelog
topics for the join stores.  The name for the stores will be ${applicationId}-&lt;storeName&gt;-this-join and ${applicationId}-&lt;storeName&gt;-other-join
or ${applicationId}-&lt;storeName&gt;-outer-this-join and ${applicationId}-&lt;storeName&gt;-outer-other-join depending if the join is an inner-join
or an outer join. The changelog topics will have the -changelog suffix.  The user should note that even though the join stores will have a
specified name, the stores will remain unavailable for querying.

Please note that if you are using {@link StreamJoined} to replace deprecated {@link KStream#join} functions with
{@link Joined} parameters in order to set the name for the join processors, you would need to create the {@link StreamJoined}
object first and then call {@link StreamJoined#withName}

@param storeName  The name to use for the store
@param <K>        The key type
@param <V1>       This value type
@param <V2>       Other value type
@return            {@link StreamJoined} instance
streams/src/main/java/org/apache/kafka/streams/kstream/StreamJoined.java