@@ -0,0 +1,1427 @@
+package org.realityforge.replicant.example.server.service.tyrell;%0A%0Aimport java.util.LinkedList;%0Aimport java.util.List;%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0Aimport javax.inject.Inject;%0Aimport org.realityforge.replicant.example.server.entity.tyrell.Building;%0Aimport org.realityforge.replicant.server.EntityMessage;%0Aimport org.realityforge.replicant.server.EntityMessageGenerator;%0A%0A/**%0A * Utility class that encodes entities as sets of messages.%0A */%0Apublic class Encoder%0A%7B%0A  private final EntityMessageGenerator _messageGenerator;%0A%0A  @Inject%0A  public Encoder( final EntityMessageGenerator messageGenerator )%0A  %7B%0A    _messageGenerator = messageGenerator;%0A%0A  %7D%0A%0A  void encodeBuilding( @Nonnull final LinkedList%3CEntityMessage%3E messages, @Nonnull final Building building )%0A  %7B%0A    encodeObject( messages, building );%0A    encodeObjects( messages, building.getRooms() );%0A  %7D%0A%0A  void encodeObjects( @Nonnull final LinkedList%3CEntityMessage%3E messages, @Nonnull final List objects )%0A  %7B%0A    for ( final Object object : objects )%0A    %7B%0A      encodeObject( messages, object );%0A    %7D%0A  %7D%0A%0A  void encodeObject( @Nonnull final LinkedList%3CEntityMessage%3E messages, @Nullable final Object object )%0A  %7B%0A    if ( null != object )%0A    %7B%0A      final EntityMessage message = _messageGenerator.convertToEntityMessage( object, true );%0A      if ( null != message )%0A      %7B%0A        messages.add( message );%0A      %7D%0A    %7D%0A  %7D%0A%7D%0A

Add a simple generator. This should be encoded.