@@ -0,0 +1,1272 @@
+package org.realityforge.replicant.client;%0A%0Aimport java.io.Serializable;%0Aimport java.util.Map;%0Aimport javax.annotation.Nullable;%0A%0A/**%0A * The ChangeMapper is responsible for applying changes to the world.%0A *%0A * %3Cp%3EThe mapper will be invoked for each change message and is responsible for;%3C/p%3E%0A *%0A * %3Cul%3E%0A *   %3Cli%3Ecreating the entity if it does not already exist%3C/li%3E%0A *   %3Cli%3Eregistering or de-registering the entity in the %7B@link EntityRepository%7D%3C/li%3E%0A *   %3Cli%3Eapplying the state changes to the entity%3C/li%3E%0A *   %3Cli%3Egenerating change messages and propagating them through the %7B@link EntityChangeBroker%7D%3C/li%3E%0A * %3C/ul%3E%0A *%0A * %3Cp%3EAs the ChangeMapper is very specific to the domain model that is being replicated, the ChangeMapper%0A * is typically generated from a description via a tool such as Domgen.%3C/p%3E%0A */%0Apublic interface ChangeMapper%0A%7B%0A  /**%0A   * Apply a single change to the world.%0A   *%0A   * @param typeID the type code of the entities type.%0A   * @param designator the entities designator,%0A   * @param data the data to use to update the entity or null if the entity should be removed from the system.%0A   * @return the entity that was created, updated or removed.%0A   */%0A  Object applyChange( int typeID, Object designator, @Nullable Map%3CString, Serializable%3E data );%0A%7D%0A

Add in an interface to map changes to a particular world. It will ultimately be implemented for each world