class CombinedKeySchema {

    Bytes prefixBytes(final KO key) {
        //The serialization format. Note that primaryKeySerialized is not required/used in this function.
        //{Integer.BYTES foreignKeyLength}{foreignKeySerialized}{Optional-primaryKeySerialized}

        final byte[] foreignKeySerializedData = foreignKeySerializer.serialize(foreignKeySerdeTopic, key);

        final ByteBuffer buf = ByteBuffer.allocate(Integer.BYTES + foreignKeySerializedData.length);
        buf.putInt(foreignKeySerializedData.length);
        buf.put(foreignKeySerializedData);
        return Bytes.wrap(buf.array());
    }

    public  CombinedKeySchema(final Supplier<String> foreignKeySerdeTopicSupplier,
                             final Serde<KO> foreignKeySerde,
                             final Supplier<String> primaryKeySerdeTopicSupplier,
                             final Serde<K> primaryKeySerde);

}