In a scenario where entity A and B share a component World:
world = new World();
entityA.addComponent(world);
entityB.addComponent(world);
then you encode
encodedA = encoder.encode(entityA);
encodedB = encoder.encode(entityB);
then you decode
entityA = decoder.decode(encodedA);
entityB = decoder.decode(encodedB);
unfortunately
trace(entityA.getComponent(World) == entityB.getComponent(World)) // outputs false
boo!