Serializer serializer;
if (type.isArray()) return arraySerializer;
if (CustomSerialization.class.isAssignableFrom(type)) return customSerializer;
if (Collection.class.isAssignableFrom(type)) return collectionSerializer;
if (Map.class.isAssignableFrom(type)) return mapSerializer;
if (Enum.class.isAssignableFrom(type)) return new EnumSerializer(type);
if (type.isAnnotationPresent(DefaultSerializer.class)) {
Class<? extends Serializer> serializerClass = ((DefaultSerializer)type.getAnnotation(DefaultSerializer.class)).value();
try {
try {
return serializerClass.getConstructor(Kryo.class, Class.class).newInstance(this, type);