class MetadataFromSignal implements Supplier<Metadata> {

    public static MetadataFromSignal of(final Signal<?> signal,
            final WithOptionalEntity withOptionalEntity,
            @Nullable final Metadata existingMetadata) {
        return new MetadataFromSignal(checkNotNull(signal, "signal"),
                checkNotNull(withOptionalEntity, "withOptionalEntity"),
                existingMetadata);
    }

    private  MetadataFromSignal(final Signal<?> signal, final WithOptionalEntity withOptionalEntity,
            @Nullable final Metadata existingMetadata);

}