@Provides
@Singleton
@Inject
RobotSerializer provideRobotSerializer() {
NavigableMap<ProtocolVersion, Gson> gsons = Maps.newTreeMap();
Gson gsonForPostV2 = new GsonFactory().create();
gsons.put(ProtocolVersion.V2_2, gsonForPostV2);
// Remove lines below if we want to stop support for <0.22
gsons.put(ProtocolVersion.V2_1, gsonForPostV2);
GsonFactory factoryForV2 = new GsonFactory();
ElementGsonAdaptorV2 elementGsonAdaptorV2 = new ElementGsonAdaptorV2();
factoryForV2.registerTypeAdapter(Element.class, elementGsonAdaptorV2);
factoryForV2.registerTypeAdapter(Attachment.class, elementGsonAdaptorV2);
gsons.put(ProtocolVersion.V2, factoryForV2.create());
return new RobotSerializer(gsons, ProtocolVersion.DEFAULT);
}