public synchronized <KeyT extends Key, SerializationT extends Serialization>
      void registerKeySerializer(KeySerializer<KeyT, SerializationT> serializer)
          throws GeneralSecurityException {
    SerializationRegistry newRegistry =
        new SerializationRegistry.Builder(registry.get()).registerKeySerializer(serializer).build();
    registry.set(newRegistry);
  }
Registers a key serializer for later use in {@link #serializeKey}.

<p>This registers a key serializer which can later be used to serialize a key by calling {@link
#serializeKey}. If a serializer for the pair {@code (KeyT, SerializationT)} has already been
registered, this checks if they are the same. If they are, the call is ignored, otherwise an
exception is thrown, and the object is unchanged.
java_src/src/main/java/com/google/crypto/tink/internal/MutableSerializationRegistry.java