code: public static void registerSerializers(final Kryo kryo) {
  
          // ImmutableList (abstract class)
          //  +- EmptyImmutableSet
          //  |   EmptyImmutableSet
          //  +- SingletonImmutableSet
          //  |   Optimized for Set with only 1 element.
          //  +- RegularImmutableSet
          //  |   RegularImmutableList
          //  +- EnumImmutableSet
          //  |   EnumImmutableSet
  
          final ImmutableSetSerializer serializer = new ImmutableSetSerializer();
  
          kryo.register(ImmutableSet.class, serializer);
  
          // Note:
          //  Only registering above is good enough for serializing/deserializing.
          //  but if using Kryo#copy, following is required.
  
          kryo.register(ImmutableSet.of().getClass(), serializer);
          kryo.register(ImmutableSet.of(1).getClass(), serializer);
          kryo.register(ImmutableSet.of(1,2,3).getClass(), serializer);
  
          kryo.register(Sets.immutableEnumSet(SomeEnum.A, SomeEnum.B, SomeEnum.C).getClass(), serializer);
      }
docs: Creates a new {@link ImmutableSetSerializer} and registers its serializer
  for the several ImmutableSet related classes.
  
  @param kryo the {@link Kryo} instance to set the serializer on