2021-06-27 20:44:35 +00:00
package com.esotericsoftware.kryo ;
import c.e.a.a ;
import c.e.b.b ;
import com.esotericsoftware.kryo.factories.PseudoSerializerFactory ;
import com.esotericsoftware.kryo.factories.ReflectionSerializerFactory ;
import com.esotericsoftware.kryo.factories.SerializerFactory ;
import com.esotericsoftware.kryo.io.Input ;
import com.esotericsoftware.kryo.io.Output ;
import com.esotericsoftware.kryo.serializers.ClosureSerializer ;
import com.esotericsoftware.kryo.serializers.CollectionSerializer ;
import com.esotericsoftware.kryo.serializers.DefaultArraySerializers ;
import com.esotericsoftware.kryo.serializers.DefaultSerializers ;
import com.esotericsoftware.kryo.serializers.FieldSerializer ;
import com.esotericsoftware.kryo.serializers.FieldSerializerConfig ;
import com.esotericsoftware.kryo.serializers.GenericsResolver ;
import com.esotericsoftware.kryo.serializers.MapSerializer ;
import com.esotericsoftware.kryo.serializers.OptionalSerializers ;
import com.esotericsoftware.kryo.serializers.TaggedFieldSerializerConfig ;
import com.esotericsoftware.kryo.serializers.TimeSerializers ;
import com.esotericsoftware.kryo.util.DefaultClassResolver ;
import com.esotericsoftware.kryo.util.DefaultStreamFactory ;
import com.esotericsoftware.kryo.util.IdentityMap ;
import com.esotericsoftware.kryo.util.IntArray ;
import com.esotericsoftware.kryo.util.MapReferenceResolver ;
import com.esotericsoftware.kryo.util.ObjectMap ;
import com.esotericsoftware.kryo.util.Util ;
import h0.b.b.a ;
import java.lang.reflect.Constructor ;
import java.lang.reflect.InvocationHandler ;
import java.lang.reflect.Modifier ;
import java.lang.reflect.Proxy ;
import java.math.BigDecimal ;
import java.math.BigInteger ;
import java.net.URL ;
import java.nio.charset.Charset ;
import java.util.ArrayList ;
import java.util.Calendar ;
import java.util.Collection ;
import java.util.Collections ;
import java.util.Currency ;
import java.util.Date ;
import java.util.EnumSet ;
import java.util.Locale ;
import java.util.Map ;
import java.util.TimeZone ;
import java.util.TreeMap ;
import java.util.TreeSet ;
public class Kryo {
public static final byte NOT_NULL = 1 ;
private static final int NO_REF = - 2 ;
public static final byte NULL = 0 ;
private static final int REF = - 1 ;
private boolean autoReset ;
private ClassLoader classLoader ;
private final ClassResolver classResolver ;
private ObjectMap context ;
private int copyDepth ;
private boolean copyReferences ;
private boolean copyShallow ;
private SerializerFactory defaultSerializer ;
private final ArrayList < DefaultSerializerEntry > defaultSerializers ;
private int depth ;
private FieldSerializerConfig fieldSerializerConfig ;
private GenericsResolver genericsResolver ;
private ObjectMap graphContext ;
private final int lowPriorityDefaultSerializerCount ;
private int maxDepth ;
private Object needsCopyReference ;
private int nextRegisterID ;
private IdentityMap originalToCopy ;
private Object readObject ;
private final IntArray readReferenceIds ;
private ReferenceResolver referenceResolver ;
private boolean references ;
private boolean registrationRequired ;
private a strategy ;
private StreamFactory streamFactory ;
private TaggedFieldSerializerConfig taggedFieldSerializerConfig ;
private volatile Thread thread ;
private boolean warnUnregisteredClasses ;
public static class DefaultInstantiatorStrategy implements a {
private a fallbackStrategy ;
/* renamed from: com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy$1 reason: invalid class name */
public class AnonymousClass1 implements h0 . b . a . a {
public final /* synthetic */ b val$access ;
public final /* synthetic */ Class val$type ;
public AnonymousClass1 ( b bVar , Class cls ) {
this . val$access = bVar ;
this . val$type = cls ;
}
@Override // h0.b.a.a
public Object newInstance ( ) {
try {
return this . val$access . c ( ) ;
} catch ( Exception e ) {
StringBuilder L = c . d . b . a . a . L ( " Error constructing instance of class: " ) ;
L . append ( Util . className ( this . val$type ) ) ;
throw new KryoException ( L . toString ( ) , e ) ;
}
}
}
/* renamed from: com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy$2 reason: invalid class name */
public class AnonymousClass2 implements h0 . b . a . a {
public final /* synthetic */ Constructor val$constructor ;
public final /* synthetic */ Class val$type ;
public AnonymousClass2 ( Constructor constructor , Class cls ) {
this . val$constructor = constructor ;
this . val$type = cls ;
}
@Override // h0.b.a.a
public Object newInstance ( ) {
try {
return this . val$constructor . newInstance ( new Object [ 0 ] ) ;
} catch ( Exception e ) {
StringBuilder L = c . d . b . a . a . L ( " Error constructing instance of class: " ) ;
L . append ( Util . className ( this . val$type ) ) ;
throw new KryoException ( L . toString ( ) , e ) ;
}
}
}
public DefaultInstantiatorStrategy ( ) {
}
public DefaultInstantiatorStrategy ( a aVar ) {
this . fallbackStrategy = aVar ;
}
public a getFallbackInstantiatorStrategy ( ) {
return this . fallbackStrategy ;
}
@Override // h0.b.b.a
public h0 . b . a . a newInstantiatorOf ( Class cls ) {
Constructor constructor ;
if ( ! Util . IS_ANDROID ) {
if ( ! ( cls . getEnclosingClass ( ) ! = null & & cls . isMemberClass ( ) & & ! Modifier . isStatic ( cls . getModifiers ( ) ) ) ) {
try {
return new AnonymousClass1 ( b . a ( cls ) , cls ) ;
} catch ( Exception unused ) {
}
}
}
try {
constructor = cls . getConstructor ( null ) ;
} catch ( Exception unused2 ) {
try {
constructor = cls . getDeclaredConstructor ( null ) ;
constructor . setAccessible ( true ) ;
} catch ( Exception unused3 ) {
a aVar = this . fallbackStrategy ;
if ( aVar ! = null ) {
return aVar . newInstantiatorOf ( cls ) ;
}
if ( ! cls . isMemberClass ( ) | | Modifier . isStatic ( cls . getModifiers ( ) ) ) {
StringBuilder L = c . d . b . a . a . L ( " Class cannot be created (missing no-arg constructor): " ) ;
L . append ( Util . className ( cls ) ) ;
StringBuilder sb = new StringBuilder ( L . toString ( ) ) ;
if ( cls . getSimpleName ( ) . equals ( " " ) ) {
c . d . b . a . a . k0 ( sb , " \ n \ tThis is an anonymous class, which is not serializable by default in Kryo. Possible solutions: " , " 1. Remove uses of anonymous classes, including double brace initialization, from the containing " , " class. This is the safest solution, as anonymous classes don't have predictable names for serialization. " , " \ n \ t2. Register a FieldSerializer for the containing class and call " ) ;
sb . append ( " FieldSerializer#setIgnoreSyntheticFields(false) on it. This is not safe but may be sufficient temporarily. " ) ;
sb . append ( " Use at your own risk. " ) ;
}
throw new KryoException ( sb . toString ( ) ) ;
}
StringBuilder L2 = c . d . b . a . a . L ( " Class cannot be created (non-static member class): " ) ;
L2 . append ( Util . className ( cls ) ) ;
throw new KryoException ( L2 . toString ( ) ) ;
}
}
return new AnonymousClass2 ( constructor , cls ) ;
}
public void setFallbackInstantiatorStrategy ( a aVar ) {
this . fallbackStrategy = aVar ;
}
}
public static final class DefaultSerializerEntry {
public final SerializerFactory serializerFactory ;
public final Class type ;
public DefaultSerializerEntry ( Class cls , SerializerFactory serializerFactory ) {
this . type = cls ;
this . serializerFactory = serializerFactory ;
}
}
public Kryo ( ) {
this ( new DefaultClassResolver ( ) , new MapReferenceResolver ( ) , new DefaultStreamFactory ( ) ) ;
}
public Kryo ( ClassResolver classResolver , ReferenceResolver referenceResolver ) {
this ( classResolver , referenceResolver , new DefaultStreamFactory ( ) ) ;
}
public Kryo ( ClassResolver classResolver , ReferenceResolver referenceResolver , StreamFactory streamFactory ) {
this . defaultSerializer = new ReflectionSerializerFactory ( FieldSerializer . class ) ;
ArrayList < DefaultSerializerEntry > arrayList = new ArrayList < > ( 33 ) ;
this . defaultSerializers = arrayList ;
this . classLoader = getClass ( ) . getClassLoader ( ) ;
this . strategy = new DefaultInstantiatorStrategy ( ) ;
this . maxDepth = Integer . MAX_VALUE ;
this . autoReset = true ;
this . readReferenceIds = new IntArray ( 0 ) ;
this . copyReferences = true ;
this . genericsResolver = new GenericsResolver ( ) ;
this . fieldSerializerConfig = new FieldSerializerConfig ( ) ;
this . taggedFieldSerializerConfig = new TaggedFieldSerializerConfig ( ) ;
if ( classResolver ! = null ) {
this . classResolver = classResolver ;
classResolver . setKryo ( this ) ;
this . streamFactory = streamFactory ;
streamFactory . setKryo ( this ) ;
this . referenceResolver = referenceResolver ;
if ( referenceResolver ! = null ) {
referenceResolver . setKryo ( this ) ;
this . references = true ;
}
addDefaultSerializer ( byte [ ] . class , DefaultArraySerializers . ByteArraySerializer . class ) ;
addDefaultSerializer ( char [ ] . class , DefaultArraySerializers . CharArraySerializer . class ) ;
addDefaultSerializer ( short [ ] . class , DefaultArraySerializers . ShortArraySerializer . class ) ;
addDefaultSerializer ( int [ ] . class , DefaultArraySerializers . IntArraySerializer . class ) ;
addDefaultSerializer ( long [ ] . class , DefaultArraySerializers . LongArraySerializer . class ) ;
addDefaultSerializer ( float [ ] . class , DefaultArraySerializers . FloatArraySerializer . class ) ;
addDefaultSerializer ( double [ ] . class , DefaultArraySerializers . DoubleArraySerializer . class ) ;
addDefaultSerializer ( boolean [ ] . class , DefaultArraySerializers . BooleanArraySerializer . class ) ;
addDefaultSerializer ( String [ ] . class , DefaultArraySerializers . StringArraySerializer . class ) ;
addDefaultSerializer ( Object [ ] . class , DefaultArraySerializers . ObjectArraySerializer . class ) ;
addDefaultSerializer ( KryoSerializable . class , DefaultSerializers . KryoSerializableSerializer . class ) ;
addDefaultSerializer ( BigInteger . class , DefaultSerializers . BigIntegerSerializer . class ) ;
addDefaultSerializer ( BigDecimal . class , DefaultSerializers . BigDecimalSerializer . class ) ;
addDefaultSerializer ( Class . class , DefaultSerializers . ClassSerializer . class ) ;
addDefaultSerializer ( Date . class , DefaultSerializers . DateSerializer . class ) ;
addDefaultSerializer ( Enum . class , DefaultSerializers . EnumSerializer . class ) ;
addDefaultSerializer ( EnumSet . class , DefaultSerializers . EnumSetSerializer . class ) ;
addDefaultSerializer ( Currency . class , DefaultSerializers . CurrencySerializer . class ) ;
addDefaultSerializer ( StringBuffer . class , DefaultSerializers . StringBufferSerializer . class ) ;
addDefaultSerializer ( StringBuilder . class , DefaultSerializers . StringBuilderSerializer . class ) ;
addDefaultSerializer ( Collections . EMPTY_LIST . getClass ( ) , DefaultSerializers . CollectionsEmptyListSerializer . class ) ;
addDefaultSerializer ( Collections . EMPTY_MAP . getClass ( ) , DefaultSerializers . CollectionsEmptyMapSerializer . class ) ;
addDefaultSerializer ( Collections . EMPTY_SET . getClass ( ) , DefaultSerializers . CollectionsEmptySetSerializer . class ) ;
addDefaultSerializer ( Collections . singletonList ( null ) . getClass ( ) , DefaultSerializers . CollectionsSingletonListSerializer . class ) ;
addDefaultSerializer ( Collections . singletonMap ( null , null ) . getClass ( ) , DefaultSerializers . CollectionsSingletonMapSerializer . class ) ;
addDefaultSerializer ( Collections . singleton ( null ) . getClass ( ) , DefaultSerializers . CollectionsSingletonSetSerializer . class ) ;
addDefaultSerializer ( TreeSet . class , DefaultSerializers . TreeSetSerializer . class ) ;
addDefaultSerializer ( Collection . class , CollectionSerializer . class ) ;
addDefaultSerializer ( TreeMap . class , DefaultSerializers . TreeMapSerializer . class ) ;
addDefaultSerializer ( Map . class , MapSerializer . class ) ;
addDefaultSerializer ( TimeZone . class , DefaultSerializers . TimeZoneSerializer . class ) ;
addDefaultSerializer ( Calendar . class , DefaultSerializers . CalendarSerializer . class ) ;
addDefaultSerializer ( Locale . class , DefaultSerializers . LocaleSerializer . class ) ;
addDefaultSerializer ( Charset . class , DefaultSerializers . CharsetSerializer . class ) ;
addDefaultSerializer ( URL . class , DefaultSerializers . URLSerializer . class ) ;
OptionalSerializers . addDefaultSerializers ( this ) ;
TimeSerializers . addDefaultSerializers ( this ) ;
this . lowPriorityDefaultSerializerCount = arrayList . size ( ) ;
register ( Integer . TYPE , new DefaultSerializers . IntSerializer ( ) ) ;
register ( String . class , new DefaultSerializers . StringSerializer ( ) ) ;
register ( Float . TYPE , new DefaultSerializers . FloatSerializer ( ) ) ;
register ( Boolean . TYPE , new DefaultSerializers . BooleanSerializer ( ) ) ;
register ( Byte . TYPE , new DefaultSerializers . ByteSerializer ( ) ) ;
register ( Character . TYPE , new DefaultSerializers . CharSerializer ( ) ) ;
register ( Short . TYPE , new DefaultSerializers . ShortSerializer ( ) ) ;
register ( Long . TYPE , new DefaultSerializers . LongSerializer ( ) ) ;
register ( Double . TYPE , new DefaultSerializers . DoubleSerializer ( ) ) ;
register ( Void . TYPE , new DefaultSerializers . VoidSerializer ( ) ) ;
return ;
}
throw new IllegalArgumentException ( " classResolver cannot be null. " ) ;
}
public Kryo ( ReferenceResolver referenceResolver ) {
this ( new DefaultClassResolver ( ) , referenceResolver , new DefaultStreamFactory ( ) ) ;
}
private void beginObject ( ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i = this . depth ;
if ( i ! = this . maxDepth ) {
this . depth = i + 1 ;
return ;
}
StringBuilder L = c . d . b . a . a . L ( " Max depth exceeded: " ) ;
L . append ( this . depth ) ;
throw new KryoException ( L . toString ( ) ) ;
}
public void addDefaultSerializer ( Class cls , Serializer serializer ) {
if ( cls = = null ) {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
} else if ( serializer ! = null ) {
DefaultSerializerEntry defaultSerializerEntry = new DefaultSerializerEntry ( cls , new PseudoSerializerFactory ( serializer ) ) ;
ArrayList < DefaultSerializerEntry > arrayList = this . defaultSerializers ;
arrayList . add ( arrayList . size ( ) - this . lowPriorityDefaultSerializerCount , defaultSerializerEntry ) ;
} else {
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
}
public void addDefaultSerializer ( Class cls , SerializerFactory serializerFactory ) {
if ( cls = = null ) {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
} else if ( serializerFactory ! = null ) {
DefaultSerializerEntry defaultSerializerEntry = new DefaultSerializerEntry ( cls , serializerFactory ) ;
ArrayList < DefaultSerializerEntry > arrayList = this . defaultSerializers ;
arrayList . add ( arrayList . size ( ) - this . lowPriorityDefaultSerializerCount , defaultSerializerEntry ) ;
} else {
throw new IllegalArgumentException ( " serializerFactory cannot be null. " ) ;
}
}
public void addDefaultSerializer ( Class cls , Class < ? extends Serializer > cls2 ) {
if ( cls = = null ) {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
} else if ( cls2 ! = null ) {
DefaultSerializerEntry defaultSerializerEntry = new DefaultSerializerEntry ( cls , new ReflectionSerializerFactory ( cls2 ) ) ;
ArrayList < DefaultSerializerEntry > arrayList = this . defaultSerializers ;
arrayList . add ( arrayList . size ( ) - this . lowPriorityDefaultSerializerCount , defaultSerializerEntry ) ;
} else {
throw new IllegalArgumentException ( " serializerClass cannot be null. " ) ;
}
}
public < T > T copy ( T t ) {
if ( t = = null ) {
return null ;
}
if ( this . copyShallow ) {
return t ;
}
this . copyDepth + + ;
try {
if ( this . originalToCopy = = null ) {
this . originalToCopy = new IdentityMap ( ) ;
}
T t2 = ( T ) this . originalToCopy . get ( t ) ;
if ( t2 ! = null ) {
return t2 ;
}
if ( this . copyReferences ) {
this . needsCopyReference = t ;
}
T t3 = t instanceof KryoCopyable ? ( T ) t . copy ( this ) : ( T ) getSerializer ( t . getClass ( ) ) . copy ( this , t ) ;
if ( this . needsCopyReference ! = null ) {
reference ( t3 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i = this . copyDepth - 1 ;
this . copyDepth = i ;
if ( i = = 0 ) {
reset ( ) ;
}
return t3 ;
} finally {
int i2 = this . copyDepth - 1 ;
this . copyDepth = i2 ;
if ( i2 = = 0 ) {
reset ( ) ;
}
}
}
public < T > T copy ( T t , Serializer serializer ) {
if ( t = = null ) {
return null ;
}
if ( this . copyShallow ) {
return t ;
}
this . copyDepth + + ;
try {
if ( this . originalToCopy = = null ) {
this . originalToCopy = new IdentityMap ( ) ;
}
T t2 = ( T ) this . originalToCopy . get ( t ) ;
if ( t2 ! = null ) {
return t2 ;
}
if ( this . copyReferences ) {
this . needsCopyReference = t ;
}
T t3 = t instanceof KryoCopyable ? ( T ) t . copy ( this ) : ( T ) serializer . copy ( this , t ) ;
if ( this . needsCopyReference ! = null ) {
reference ( t3 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i = this . copyDepth - 1 ;
this . copyDepth = i ;
if ( i = = 0 ) {
reset ( ) ;
}
return t3 ;
} finally {
int i2 = this . copyDepth - 1 ;
this . copyDepth = i2 ;
if ( i2 = = 0 ) {
reset ( ) ;
}
}
}
public < T > T copyShallow ( T t ) {
if ( t = = null ) {
return null ;
}
int i = 1 ;
this . copyDepth + + ;
this . copyShallow = true ;
boolean z2 = false ;
try {
if ( this . originalToCopy = = null ) {
this . originalToCopy = new IdentityMap ( ) ;
}
T t2 = ( T ) this . originalToCopy . get ( t ) ;
if ( t2 ! = null ) {
return t2 ;
}
if ( this . copyReferences ) {
this . needsCopyReference = t ;
}
T t3 = t instanceof KryoCopyable ? ( T ) t . copy ( this ) : ( T ) getSerializer ( t . getClass ( ) ) . copy ( this , t ) ;
if ( this . needsCopyReference ! = null ) {
reference ( t3 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
this . copyShallow = false ;
int i2 = this . copyDepth - 1 ;
this . copyDepth = i2 ;
if ( i2 = = 0 ) {
reset ( ) ;
}
return t3 ;
} finally {
this . copyShallow = z2 ;
int i3 = this . copyDepth - i ;
this . copyDepth = i3 ;
if ( i3 = = 0 ) {
reset ( ) ;
}
}
}
public < T > T copyShallow ( T t , Serializer serializer ) {
if ( t = = null ) {
return null ;
}
int i = 1 ;
this . copyDepth + + ;
this . copyShallow = true ;
boolean z2 = false ;
try {
if ( this . originalToCopy = = null ) {
this . originalToCopy = new IdentityMap ( ) ;
}
T t2 = ( T ) this . originalToCopy . get ( t ) ;
if ( t2 ! = null ) {
return t2 ;
}
if ( this . copyReferences ) {
this . needsCopyReference = t ;
}
T t3 = t instanceof KryoCopyable ? ( T ) t . copy ( this ) : ( T ) serializer . copy ( this , t ) ;
if ( this . needsCopyReference ! = null ) {
reference ( t3 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
this . copyShallow = false ;
int i2 = this . copyDepth - 1 ;
this . copyDepth = i2 ;
if ( i2 = = 0 ) {
reset ( ) ;
}
return t3 ;
} finally {
this . copyShallow = z2 ;
int i3 = this . copyDepth - i ;
this . copyDepth = i3 ;
if ( i3 = = 0 ) {
reset ( ) ;
}
}
}
@Deprecated
public boolean getAsmEnabled ( ) {
return this . fieldSerializerConfig . isUseAsm ( ) ;
}
public ClassLoader getClassLoader ( ) {
return this . classLoader ;
}
public ClassResolver getClassResolver ( ) {
return this . classResolver ;
}
public ObjectMap getContext ( ) {
if ( this . context = = null ) {
this . context = new ObjectMap ( ) ;
}
return this . context ;
}
public Serializer getDefaultSerializer ( Class cls ) {
if ( cls ! = null ) {
Serializer defaultSerializerForAnnotatedType = getDefaultSerializerForAnnotatedType ( cls ) ;
if ( defaultSerializerForAnnotatedType ! = null ) {
return defaultSerializerForAnnotatedType ;
}
int size = this . defaultSerializers . size ( ) ;
for ( int i = 0 ; i < size ; i + + ) {
DefaultSerializerEntry defaultSerializerEntry = this . defaultSerializers . get ( i ) ;
if ( defaultSerializerEntry . type . isAssignableFrom ( cls ) ) {
return defaultSerializerEntry . serializerFactory . makeSerializer ( this , cls ) ;
}
}
return newDefaultSerializer ( cls ) ;
}
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
public Serializer getDefaultSerializerForAnnotatedType ( Class cls ) {
if ( cls . isAnnotationPresent ( DefaultSerializer . class ) ) {
return ReflectionSerializerFactory . makeSerializer ( this , ( ( DefaultSerializer ) cls . getAnnotation ( DefaultSerializer . class ) ) . value ( ) , cls ) ;
}
return null ;
}
public int getDepth ( ) {
return this . depth ;
}
public FieldSerializerConfig getFieldSerializerConfig ( ) {
return this . fieldSerializerConfig ;
}
public GenericsResolver getGenericsResolver ( ) {
return this . genericsResolver ;
}
public ObjectMap getGraphContext ( ) {
if ( this . graphContext = = null ) {
this . graphContext = new ObjectMap ( ) ;
}
return this . graphContext ;
}
public h0 . b . b . a getInstantiatorStrategy ( ) {
return this . strategy ;
}
public int getNextRegistrationId ( ) {
while ( true ) {
int i = this . nextRegisterID ;
if ( i = = - 2 ) {
throw new KryoException ( " No registration IDs are available. " ) ;
} else if ( this . classResolver . getRegistration ( i ) = = null ) {
return this . nextRegisterID ;
} else {
this . nextRegisterID + + ;
}
}
}
public IdentityMap getOriginalToCopyMap ( ) {
return this . originalToCopy ;
}
public ReferenceResolver getReferenceResolver ( ) {
return this . referenceResolver ;
}
public boolean getReferences ( ) {
return this . references ;
}
public Registration getRegistration ( int i ) {
return this . classResolver . getRegistration ( i ) ;
}
public Registration getRegistration ( Class cls ) {
if ( cls ! = null ) {
Registration registration = this . classResolver . getRegistration ( cls ) ;
if ( registration ! = null ) {
return registration ;
}
if ( Proxy . isProxyClass ( cls ) ) {
registration = getRegistration ( InvocationHandler . class ) ;
} else if ( ! cls . isEnum ( ) & & Enum . class . isAssignableFrom ( cls ) & & ! Enum . class . equals ( cls ) ) {
registration = getRegistration ( cls . getEnclosingClass ( ) ) ;
} else if ( EnumSet . class . isAssignableFrom ( cls ) ) {
registration = this . classResolver . getRegistration ( EnumSet . class ) ;
} else if ( isClosure ( cls ) ) {
registration = this . classResolver . getRegistration ( ClosureSerializer . Closure . class ) ;
}
if ( registration ! = null ) {
return registration ;
}
if ( ! this . registrationRequired ) {
if ( this . warnUnregisteredClasses ) {
c . e . a . a . a . a ( 4 , null , unregisteredClassMessage ( cls ) , null ) ;
}
return this . classResolver . registerImplicit ( cls ) ;
}
throw new IllegalArgumentException ( unregisteredClassMessage ( cls ) ) ;
}
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
public Serializer getSerializer ( Class cls ) {
return getRegistration ( cls ) . getSerializer ( ) ;
}
public StreamFactory getStreamFactory ( ) {
return this . streamFactory ;
}
public TaggedFieldSerializerConfig getTaggedFieldSerializerConfig ( ) {
return this . taggedFieldSerializerConfig ;
}
public boolean isClosure ( Class cls ) {
if ( cls ! = null ) {
return cls . getName ( ) . indexOf ( 47 ) > = 0 ;
}
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
public boolean isFinal ( Class cls ) {
if ( cls ! = null ) {
return cls . isArray ( ) ? Modifier . isFinal ( Util . getElementClass ( cls ) . getModifiers ( ) ) : Modifier . isFinal ( cls . getModifiers ( ) ) ;
}
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
public boolean isRegistrationRequired ( ) {
return this . registrationRequired ;
}
public boolean isWarnUnregisteredClasses ( ) {
return this . warnUnregisteredClasses ;
}
public Serializer newDefaultSerializer ( Class cls ) {
return this . defaultSerializer . makeSerializer ( this , cls ) ;
}
public < T > T newInstance ( Class < T > cls ) {
Registration registration = getRegistration ( cls ) ;
h0 . b . a . a instantiator = registration . getInstantiator ( ) ;
if ( instantiator = = null ) {
instantiator = newInstantiator ( cls ) ;
registration . setInstantiator ( instantiator ) ;
}
return ( T ) instantiator . newInstance ( ) ;
}
public h0 . b . a . a newInstantiator ( Class cls ) {
return this . strategy . newInstantiatorOf ( cls ) ;
}
public Registration readClass ( Input input ) {
if ( input ! = null ) {
try {
return this . classResolver . readClass ( input ) ;
} finally {
if ( this . depth = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
}
}
public Object readClassAndObject ( Input input ) {
Object obj ;
if ( input ! = null ) {
beginObject ( ) ;
try {
Registration readClass = readClass ( input ) ;
if ( readClass = = null ) {
return null ;
}
Class type = readClass . getType ( ) ;
if ( this . references ) {
readClass . getSerializer ( ) . setGenerics ( this , null ) ;
int readReferenceOrNull = readReferenceOrNull ( input , type , false ) ;
if ( readReferenceOrNull = = - 1 ) {
Object obj2 = this . readObject ;
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
return obj2 ;
}
obj = readClass . getSerializer ( ) . read ( this , input , type ) ;
if ( readReferenceOrNull = = this . readReferenceIds . size ) {
reference ( obj ) ;
}
} else {
obj = readClass . getSerializer ( ) . read ( this , input , type ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
return obj ;
} finally {
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
}
}
public < T > T readObject ( Input input , Class < T > cls ) {
T t ;
if ( input = = null ) {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
} else if ( cls ! = null ) {
beginObject ( ) ;
try {
if ( this . references ) {
int readReferenceOrNull = readReferenceOrNull ( input , cls , false ) ;
if ( readReferenceOrNull = = - 1 ) {
return ( T ) this . readObject ;
}
t = ( T ) getRegistration ( cls ) . getSerializer ( ) . read ( this , input , cls ) ;
if ( readReferenceOrNull = = this . readReferenceIds . size ) {
reference ( t ) ;
}
} else {
t = ( T ) getRegistration ( cls ) . getSerializer ( ) . read ( this , input , cls ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
return t ;
} finally {
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
}
public < T > T readObject ( Input input , Class < T > cls , Serializer serializer ) {
T t ;
if ( input = = null ) {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
} else if ( cls = = null ) {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
} else if ( serializer ! = null ) {
beginObject ( ) ;
try {
if ( this . references ) {
int readReferenceOrNull = readReferenceOrNull ( input , cls , false ) ;
if ( readReferenceOrNull = = - 1 ) {
return ( T ) this . readObject ;
}
t = ( T ) serializer . read ( this , input , cls ) ;
if ( readReferenceOrNull = = this . readReferenceIds . size ) {
reference ( t ) ;
}
} else {
t = ( T ) serializer . read ( this , input , cls ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
return t ;
} finally {
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
}
public < T > T readObjectOrNull ( Input input , Class < T > cls ) {
T t ;
if ( input = = null ) {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
} else if ( cls ! = null ) {
beginObject ( ) ;
int i = 1 ;
try {
if ( this . references ) {
int readReferenceOrNull = readReferenceOrNull ( input , cls , true ) ;
if ( readReferenceOrNull = = - 1 ) {
return ( T ) this . readObject ;
}
t = ( T ) getRegistration ( cls ) . getSerializer ( ) . read ( this , input , cls ) ;
if ( readReferenceOrNull = = this . readReferenceIds . size ) {
reference ( t ) ;
}
} else {
Serializer serializer = getRegistration ( cls ) . getSerializer ( ) ;
if ( serializer . getAcceptsNull ( ) | | input . readByte ( ) ! = 0 ) {
t = ( T ) serializer . read ( this , input , cls ) ;
} else {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
return null ;
}
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
}
return t ;
} finally {
int i4 = this . depth - i ;
this . depth = i4 ;
if ( i4 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
}
}
public < T > T readObjectOrNull ( Input input , Class < T > cls , Serializer serializer ) {
T t ;
if ( input = = null ) {
throw new IllegalArgumentException ( " input cannot be null. " ) ;
} else if ( cls = = null ) {
throw new IllegalArgumentException ( " type cannot be null. " ) ;
} else if ( serializer ! = null ) {
beginObject ( ) ;
int i = 1 ;
try {
if ( this . references ) {
int readReferenceOrNull = readReferenceOrNull ( input , cls , true ) ;
if ( readReferenceOrNull = = - 1 ) {
return ( T ) this . readObject ;
}
t = ( T ) serializer . read ( this , input , cls ) ;
if ( readReferenceOrNull = = this . readReferenceIds . size ) {
reference ( t ) ;
}
} else if ( serializer . getAcceptsNull ( ) | | input . readByte ( ) ! = 0 ) {
t = ( T ) serializer . read ( this , input , cls ) ;
} else {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
return null ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
}
return t ;
} finally {
int i4 = this . depth - i ;
this . depth = i4 ;
if ( i4 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
}
public int readReferenceOrNull ( Input input , Class cls , boolean z2 ) {
int i ;
if ( cls . isPrimitive ( ) ) {
cls = Util . getWrapperClass ( cls ) ;
}
boolean useReferences = this . referenceResolver . useReferences ( cls ) ;
if ( z2 ) {
i = input . readVarInt ( true ) ;
if ( i = = 0 ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
this . readObject = null ;
return - 1 ;
} else if ( ! useReferences ) {
this . readReferenceIds . add ( - 2 ) ;
return this . readReferenceIds . size ;
}
} else if ( ! useReferences ) {
this . readReferenceIds . add ( - 2 ) ;
return this . readReferenceIds . size ;
} else {
i = input . readVarInt ( true ) ;
}
if ( i = = 1 ) {
int nextReadId = this . referenceResolver . nextReadId ( cls ) ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
this . readReferenceIds . add ( nextReadId ) ;
return this . readReferenceIds . size ;
}
this . readObject = this . referenceResolver . getReadObject ( cls , i - 2 ) ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar3 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
return - 1 ;
}
public void reference ( Object obj ) {
int pop ;
if ( this . copyDepth > 0 ) {
Object obj2 = this . needsCopyReference ;
if ( obj2 = = null ) {
return ;
}
if ( obj ! = null ) {
this . originalToCopy . put ( obj2 , obj ) ;
this . needsCopyReference = null ;
return ;
}
throw new IllegalArgumentException ( " object cannot be null. " ) ;
} else if ( this . references & & obj ! = null & & ( pop = this . readReferenceIds . pop ( ) ) ! = - 2 ) {
this . referenceResolver . setReadObject ( pop , obj ) ;
}
}
public Registration register ( Registration registration ) {
int id2 = registration . getId ( ) ;
if ( id2 > = 0 ) {
getRegistration ( registration . getId ( ) ) ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
return this . classResolver . register ( registration ) ;
}
2021-07-13 20:23:20 +00:00
throw new IllegalArgumentException ( c . d . b . a . a . k ( " id must be > 0: " , id2 ) ) ;
2021-06-27 20:44:35 +00:00
}
public Registration register ( Class cls ) {
Registration registration = this . classResolver . getRegistration ( cls ) ;
return registration ! = null ? registration : register ( cls , getDefaultSerializer ( cls ) ) ;
}
public Registration register ( Class cls , int i ) {
Registration registration = this . classResolver . getRegistration ( cls ) ;
return registration ! = null ? registration : register ( cls , getDefaultSerializer ( cls ) , i ) ;
}
public Registration register ( Class cls , Serializer serializer ) {
Registration registration = this . classResolver . getRegistration ( cls ) ;
if ( registration = = null ) {
return this . classResolver . register ( new Registration ( cls , serializer , getNextRegistrationId ( ) ) ) ;
}
registration . setSerializer ( serializer ) ;
return registration ;
}
public Registration register ( Class cls , Serializer serializer , int i ) {
if ( i > = 0 ) {
return register ( new Registration ( cls , serializer , i ) ) ;
}
2021-07-13 20:23:20 +00:00
throw new IllegalArgumentException ( c . d . b . a . a . k ( " id must be >= 0: " , i ) ) ;
2021-06-27 20:44:35 +00:00
}
public void reset ( ) {
this . depth = 0 ;
ObjectMap objectMap = this . graphContext ;
if ( objectMap ! = null ) {
objectMap . clear ( ) ;
}
this . classResolver . reset ( ) ;
if ( this . references ) {
this . referenceResolver . reset ( ) ;
this . readObject = null ;
}
this . copyDepth = 0 ;
IdentityMap identityMap = this . originalToCopy ;
if ( identityMap ! = null ) {
identityMap . clear ( 2048 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
}
@Deprecated
public void setAsmEnabled ( boolean z2 ) {
this . fieldSerializerConfig . setUseAsm ( z2 ) ;
}
public void setAutoReset ( boolean z2 ) {
this . autoReset = z2 ;
}
public void setClassLoader ( ClassLoader classLoader ) {
if ( classLoader ! = null ) {
this . classLoader = classLoader ;
return ;
}
throw new IllegalArgumentException ( " classLoader cannot be null. " ) ;
}
public void setCopyReferences ( boolean z2 ) {
this . copyReferences = z2 ;
}
public void setDefaultSerializer ( SerializerFactory serializerFactory ) {
if ( serializerFactory ! = null ) {
this . defaultSerializer = serializerFactory ;
return ;
}
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
public void setDefaultSerializer ( Class < ? extends Serializer > cls ) {
if ( cls ! = null ) {
this . defaultSerializer = new ReflectionSerializerFactory ( cls ) ;
return ;
}
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
public void setInstantiatorStrategy ( h0 . b . b . a aVar ) {
this . strategy = aVar ;
}
public void setMaxDepth ( int i ) {
if ( i > 0 ) {
this . maxDepth = i ;
return ;
}
throw new IllegalArgumentException ( " maxDepth must be > 0. " ) ;
}
public void setReferenceResolver ( ReferenceResolver referenceResolver ) {
if ( referenceResolver ! = null ) {
this . references = true ;
this . referenceResolver = referenceResolver ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
return ;
}
throw new IllegalArgumentException ( " referenceResolver cannot be null. " ) ;
}
public boolean setReferences ( boolean z2 ) {
if ( z2 = = this . references ) {
return z2 ;
}
this . references = z2 ;
if ( z2 & & this . referenceResolver = = null ) {
this . referenceResolver = new MapReferenceResolver ( ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
return ! z2 ;
}
public void setRegistrationRequired ( boolean z2 ) {
this . registrationRequired = z2 ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
}
public void setStreamFactory ( StreamFactory streamFactory ) {
this . streamFactory = streamFactory ;
}
public void setWarnUnregisteredClasses ( boolean z2 ) {
this . warnUnregisteredClasses = z2 ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
}
public String unregisteredClassMessage ( Class cls ) {
StringBuilder L = c . d . b . a . a . L ( " Class is not registered: " ) ;
L . append ( Util . className ( cls ) ) ;
L . append ( " \ nNote: To register this class use: kryo.register( " ) ;
L . append ( Util . className ( cls ) ) ;
L . append ( " .class); " ) ;
return L . toString ( ) ;
}
public Registration writeClass ( Output output , Class cls ) {
if ( output ! = null ) {
try {
return this . classResolver . writeClass ( output , cls ) ;
} finally {
if ( this . depth = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
}
}
public void writeClassAndObject ( Output output , Object obj ) {
if ( output ! = null ) {
beginObject ( ) ;
if ( obj = = null ) {
try {
writeClass ( output , null ) ;
} finally {
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
Registration writeClass = writeClass ( output , obj . getClass ( ) ) ;
if ( ! this . references | | ! writeReferenceOrNull ( output , obj , false ) ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
writeClass . getSerializer ( ) . write ( this , output , obj ) ;
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
return ;
}
return ;
}
writeClass . getSerializer ( ) . setGenerics ( this , null ) ;
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
}
}
public void writeObject ( Output output , Object obj ) {
if ( output = = null ) {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
} else if ( obj ! = null ) {
beginObject ( ) ;
try {
if ( ! this . references | | ! writeReferenceOrNull ( output , obj , false ) ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
getRegistration ( obj . getClass ( ) ) . getSerializer ( ) . write ( this , output , obj ) ;
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
return ;
}
return ;
}
getRegistration ( obj . getClass ( ) ) . getSerializer ( ) . setGenerics ( this , null ) ;
} finally {
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " object cannot be null. " ) ;
}
}
public void writeObject ( Output output , Object obj , Serializer serializer ) {
if ( output = = null ) {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
} else if ( obj = = null ) {
throw new IllegalArgumentException ( " object cannot be null. " ) ;
} else if ( serializer ! = null ) {
beginObject ( ) ;
try {
if ( ! this . references | | ! writeReferenceOrNull ( output , obj , false ) ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
serializer . write ( this , output , obj ) ;
int i = this . depth - 1 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
return ;
}
return ;
}
serializer . setGenerics ( this , null ) ;
} finally {
int i2 = this . depth - 1 ;
this . depth = i2 ;
if ( i2 = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
}
public void writeObjectOrNull ( Output output , Object obj , Serializer serializer ) {
int i ;
boolean z2 ;
if ( output = = null ) {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
} else if ( serializer ! = null ) {
beginObject ( ) ;
int i2 = 1 ;
try {
if ( this . references ) {
if ( writeReferenceOrNull ( output , obj , true ) ) {
serializer . setGenerics ( this , null ) ;
if ( i = = 0 & & z2 ) {
return ;
}
return ;
}
} else if ( ! serializer . getAcceptsNull ( ) ) {
if ( obj = = null ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
output . writeByte ( ( byte ) 0 ) ;
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
return ;
}
return ;
}
output . writeByte ( ( byte ) 1 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
serializer . write ( this , output , obj ) ;
int i4 = this . depth - 1 ;
this . depth = i4 ;
if ( i4 = = 0 & & this . autoReset ) {
reset ( ) ;
}
} finally {
i = this . depth - i2 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " serializer cannot be null. " ) ;
}
}
public void writeObjectOrNull ( Output output , Object obj , Class cls ) {
int i ;
boolean z2 ;
if ( output ! = null ) {
beginObject ( ) ;
int i2 = 1 ;
try {
Serializer serializer = getRegistration ( cls ) . getSerializer ( ) ;
if ( this . references ) {
if ( writeReferenceOrNull ( output , obj , true ) ) {
serializer . setGenerics ( this , null ) ;
if ( i = = 0 & & z2 ) {
return ;
}
return ;
}
} else if ( ! serializer . getAcceptsNull ( ) ) {
if ( obj = = null ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
output . writeByte ( ( byte ) 0 ) ;
int i3 = this . depth - 1 ;
this . depth = i3 ;
if ( i3 = = 0 & & this . autoReset ) {
reset ( ) ;
return ;
}
return ;
}
output . writeByte ( ( byte ) 1 ) ;
}
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
serializer . write ( this , output , obj ) ;
int i4 = this . depth - 1 ;
this . depth = i4 ;
if ( i4 = = 0 & & this . autoReset ) {
reset ( ) ;
}
} finally {
i = this . depth - i2 ;
this . depth = i ;
if ( i = = 0 & & this . autoReset ) {
reset ( ) ;
}
}
} else {
throw new IllegalArgumentException ( " output cannot be null. " ) ;
}
}
public boolean writeReferenceOrNull ( Output output , Object obj , boolean z2 ) {
if ( obj = = null ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
output . writeVarInt ( 0 , true ) ;
return true ;
} else if ( ! this . referenceResolver . useReferences ( obj . getClass ( ) ) ) {
if ( z2 ) {
output . writeVarInt ( 1 , true ) ;
}
return false ;
} else {
int writtenId = this . referenceResolver . getWrittenId ( obj ) ;
if ( writtenId ! = - 1 ) {
2021-07-13 20:23:20 +00:00
a . C0053a aVar2 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
output . writeVarInt ( writtenId + 2 , true ) ;
return true ;
}
this . referenceResolver . addWrittenObject ( obj ) ;
output . writeVarInt ( 1 , true ) ;
2021-07-13 20:23:20 +00:00
a . C0053a aVar3 = c . e . a . a . a ;
2021-06-27 20:44:35 +00:00
return false ;
}
}
}