@Nonnull
    public static <T, K, V> MappedChannelReceiver<T, K, V> createExpiring(@Nonnull Channel<T> channel, @Nonnull Function<? super T, ? extends K> keyMapper, @Nonnull Function<? super T, ? extends V> valueMapper, long expiryDuration, @Nonnull TimeUnit unit) {
        Objects.requireNonNull(channel, "channel");
        Objects.requireNonNull(keyMapper, "keyMapper");
        Objects.requireNonNull(unit, "unit");

        return new MappedChannelReceiver<>(channel, keyMapper, valueMapper, new CacheMessageStore<>(expiryDuration, unit));
    }
Creates a new expiring mapped channel receiver.

@param channel the channel
@param keyMapper the function used to map keys
@param valueMapper the function used to map values
@param expiryDuration the duration to expire entries after
@param unit the unit of the duration
@param <T> the message type
@param <K> the key type
@param <V> the value type
@return a new mapped channel receiver
helper/src/main/java/me/lucko/helper/messaging/util/MappedChannelReceiver.java