@Override
    public RollingDestination createDestination() {
        if (key.getStreamType() == null) {
            throw ProcessException.create("Stream type not specified");
        }

        // Don't set the processor or the task or else this rolling stream will be deleted automatically because the
        // system will think it is superseded output.
        final MetaProperties metaProperties = MetaProperties.builder()
                .feedName(key.getFeed())
                .typeName(key.getStreamType())
                .parent(metaHolder.getMeta())
                .build();

        final String nodeName = nodeInfo.getThisNodeName();
        final String volumeGroupName = volumeGroupNameProvider
                .getVolumeGroupName(key.getFeed(), key.getStreamType(), volumeGroup);
        final Target streamTarget = streamStore.openTarget(metaProperties, volumeGroupName);
        return new RollingStreamDestination(key,
                getFrequencyTrigger(),
                getCronTrigger(),
                getRollSize(),
                Instant.now(),
                streamStore,
                streamTarget,
                nodeName);
    }
Joins text instances into a single text instance.
stroom-pipeline/src/main/java/stroom/pipeline/writer/RollingStreamAppender.java