public class net.bytebuddy.implementation.HashCodeMethod extends java.lang.Object implements net.bytebuddy.implementation.Implementation
{
private static final int DEFAULT_OFFSET;
private static final int DEFAULT_MULTIPLIER;
private static final net.bytebuddy.description.method.MethodDescription$InDefinedShape HASH_CODE;
private static final net.bytebuddy.description.method.MethodDescription$InDefinedShape GET_CLASS;
private final net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider;
private final int multiplier;
private final net.bytebuddy.matcher.ElementMatcher$Junction ignored;
private final net.bytebuddy.matcher.ElementMatcher$Junction nonNullable;
protected void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v;
net.bytebuddy.implementation.HashCodeMethod v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider;
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction none()>();
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction none()>();
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider,int,net.bytebuddy.matcher.ElementMatcher$Junction,net.bytebuddy.matcher.ElementMatcher$Junction)>(v, 31, v, v);
return;
}
private void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider, int, net.bytebuddy.matcher.ElementMatcher$Junction, net.bytebuddy.matcher.ElementMatcher$Junction)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v;
net.bytebuddy.implementation.HashCodeMethod v;
int v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider;
v := @parameter: int;
v := @parameter: net.bytebuddy.matcher.ElementMatcher$Junction;
v := @parameter: net.bytebuddy.matcher.ElementMatcher$Junction;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider> = v;
v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier> = v;
v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored> = v;
v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable> = v;
return;
}
public static net.bytebuddy.implementation.HashCodeMethod usingSuperClassOffset()
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForSuperMethodCall v;
net.bytebuddy.implementation.HashCodeMethod v;
v = new net.bytebuddy.implementation.HashCodeMethod;
v = <net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForSuperMethodCall: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForSuperMethodCall INSTANCE>;
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider)>(v);
return v;
}
public static net.bytebuddy.implementation.HashCodeMethod usingTypeHashOffset(boolean)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
boolean v;
net.bytebuddy.implementation.HashCodeMethod v;
v := @parameter: boolean;
v = new net.bytebuddy.implementation.HashCodeMethod;
if v == 0 goto label;
v = <net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForDynamicTypeHash: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForDynamicTypeHash INSTANCE>;
goto label;
label:
v = <net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForStaticTypeHash: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForStaticTypeHash INSTANCE>;
label:
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider)>(v);
return v;
}
public static net.bytebuddy.implementation.HashCodeMethod usingDefaultOffset()
{
net.bytebuddy.implementation.HashCodeMethod v;
v = staticinvoke <net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod usingOffset(int)>(17);
return v;
}
public static net.bytebuddy.implementation.HashCodeMethod usingOffset(int)
{
int v;
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForFixedValue v;
net.bytebuddy.implementation.HashCodeMethod v;
v := @parameter: int;
v = new net.bytebuddy.implementation.HashCodeMethod;
v = new net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForFixedValue;
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod$OffsetProvider$ForFixedValue: void <init>(int)>(v);
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider)>(v);
return v;
}
public net.bytebuddy.implementation.HashCodeMethod withIgnoredFields(net.bytebuddy.matcher.ElementMatcher)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v, v;
net.bytebuddy.implementation.HashCodeMethod v, v;
int v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.matcher.ElementMatcher;
v = new net.bytebuddy.implementation.HashCodeMethod;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = interfaceinvoke v.<net.bytebuddy.matcher.ElementMatcher$Junction: net.bytebuddy.matcher.ElementMatcher$Junction or(net.bytebuddy.matcher.ElementMatcher)>(v);
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider,int,net.bytebuddy.matcher.ElementMatcher$Junction,net.bytebuddy.matcher.ElementMatcher$Junction)>(v, v, v, v);
return v;
}
public net.bytebuddy.implementation.HashCodeMethod withNonNullableFields(net.bytebuddy.matcher.ElementMatcher)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v, v;
net.bytebuddy.implementation.HashCodeMethod v, v;
int v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.matcher.ElementMatcher;
v = new net.bytebuddy.implementation.HashCodeMethod;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
v = interfaceinvoke v.<net.bytebuddy.matcher.ElementMatcher$Junction: net.bytebuddy.matcher.ElementMatcher$Junction or(net.bytebuddy.matcher.ElementMatcher)>(v);
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider,int,net.bytebuddy.matcher.ElementMatcher$Junction,net.bytebuddy.matcher.ElementMatcher$Junction)>(v, v, v, v);
return v;
}
public net.bytebuddy.implementation.Implementation withMultiplier(int)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v;
net.bytebuddy.implementation.HashCodeMethod v, v;
int v;
java.lang.IllegalArgumentException v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: int;
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Hash code multiplier must not be zero");
throw v;
label:
v = new net.bytebuddy.implementation.HashCodeMethod;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod: void <init>(net.bytebuddy.implementation.HashCodeMethod$OffsetProvider,int,net.bytebuddy.matcher.ElementMatcher$Junction,net.bytebuddy.matcher.ElementMatcher$Junction)>(v, v, v, v);
return v;
}
public net.bytebuddy.dynamic.scaffold.InstrumentedType prepare(net.bytebuddy.dynamic.scaffold.InstrumentedType)
{
net.bytebuddy.dynamic.scaffold.InstrumentedType v;
net.bytebuddy.implementation.HashCodeMethod v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.dynamic.scaffold.InstrumentedType;
return v;
}
public net.bytebuddy.implementation.bytecode.ByteCodeAppender appender(net.bytebuddy.implementation.Implementation$Target)
{
java.lang.IllegalStateException v;
int v;
net.bytebuddy.implementation.bytecode.StackManipulation v;
java.lang.String v;
boolean v;
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.implementation.Implementation$Target v;
net.bytebuddy.description.field.FieldList v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v, v, v, v;
net.bytebuddy.implementation.HashCodeMethod v;
net.bytebuddy.matcher.FilterableList v;
net.bytebuddy.description.type.TypeDescription v, v, v, v;
net.bytebuddy.implementation.HashCodeMethod$Appender v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: net.bytebuddy.implementation.Implementation$Target;
v = interfaceinvoke v.<net.bytebuddy.implementation.Implementation$Target: net.bytebuddy.description.type.TypeDescription getInstrumentedType()>();
v = interfaceinvoke v.<net.bytebuddy.description.type.TypeDescription: boolean isInterface()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = interfaceinvoke v.<net.bytebuddy.implementation.Implementation$Target: net.bytebuddy.description.type.TypeDescription getInstrumentedType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (net.bytebuddy.description.type.TypeDescription)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Cannot implement meaningful hash code method for \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new net.bytebuddy.implementation.HashCodeMethod$Appender;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = interfaceinvoke v.<net.bytebuddy.implementation.Implementation$Target: net.bytebuddy.description.type.TypeDescription getInstrumentedType()>();
v = interfaceinvoke v.<net.bytebuddy.implementation.HashCodeMethod$OffsetProvider: net.bytebuddy.implementation.bytecode.StackManipulation resolve(net.bytebuddy.description.type.TypeDescription)>(v);
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
v = interfaceinvoke v.<net.bytebuddy.implementation.Implementation$Target: net.bytebuddy.description.type.TypeDescription getInstrumentedType()>();
v = interfaceinvoke v.<net.bytebuddy.description.type.TypeDescription: net.bytebuddy.description.field.FieldList getDeclaredFields()>();
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction isStatic()>();
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = interfaceinvoke v.<net.bytebuddy.matcher.ElementMatcher$Junction: net.bytebuddy.matcher.ElementMatcher$Junction or(net.bytebuddy.matcher.ElementMatcher)>(v);
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction not(net.bytebuddy.matcher.ElementMatcher)>(v);
v = interfaceinvoke v.<net.bytebuddy.description.field.FieldList: net.bytebuddy.matcher.FilterableList filter(net.bytebuddy.matcher.ElementMatcher)>(v);
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
specialinvoke v.<net.bytebuddy.implementation.HashCodeMethod$Appender: void <init>(net.bytebuddy.implementation.bytecode.StackManipulation,int,java.util.List,net.bytebuddy.matcher.ElementMatcher)>(v, v, v, v);
return v;
}
static void <clinit>()
{
net.bytebuddy.matcher.ElementMatcher$Junction v, v, v, v;
java.lang.Object v, v;
net.bytebuddy.matcher.FilterableList v, v;
net.bytebuddy.description.type.TypeDescription v, v;
net.bytebuddy.description.method.MethodList v, v;
v = staticinvoke <net.bytebuddy.description.type.TypeDescription$ForLoadedType: net.bytebuddy.description.type.TypeDescription of(java.lang.Class)>(class "Ljava/lang/Object;");
v = interfaceinvoke v.<net.bytebuddy.description.type.TypeDescription: net.bytebuddy.description.method.MethodList getDeclaredMethods()>();
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction isHashCode()>();
v = interfaceinvoke v.<net.bytebuddy.description.method.MethodList: net.bytebuddy.matcher.FilterableList filter(net.bytebuddy.matcher.ElementMatcher)>(v);
v = interfaceinvoke v.<net.bytebuddy.description.method.MethodList: java.lang.Object getOnly()>();
<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.description.method.MethodDescription$InDefinedShape HASH_CODE> = v;
v = staticinvoke <net.bytebuddy.description.type.TypeDescription$ForLoadedType: net.bytebuddy.description.type.TypeDescription of(java.lang.Class)>(class "Ljava/lang/Object;");
v = interfaceinvoke v.<net.bytebuddy.description.type.TypeDescription: net.bytebuddy.description.method.MethodList getDeclaredMethods()>();
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction named(java.lang.String)>("getClass");
v = staticinvoke <net.bytebuddy.matcher.ElementMatchers: net.bytebuddy.matcher.ElementMatcher$Junction takesArguments(int)>(0);
v = interfaceinvoke v.<net.bytebuddy.matcher.ElementMatcher$Junction: net.bytebuddy.matcher.ElementMatcher$Junction and(net.bytebuddy.matcher.ElementMatcher)>(v);
v = interfaceinvoke v.<net.bytebuddy.description.method.MethodList: net.bytebuddy.matcher.FilterableList filter(net.bytebuddy.matcher.ElementMatcher)>(v);
v = interfaceinvoke v.<net.bytebuddy.description.method.MethodList: java.lang.Object getOnly()>();
<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.description.method.MethodDescription$InDefinedShape GET_CLASS> = v;
return;
}
public boolean equals(java.lang.Object)
{
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v, v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v, v, v;
net.bytebuddy.implementation.HashCodeMethod v;
int v, v;
java.lang.Class v, v;
java.lang.Object v;
boolean v, v, v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v := @parameter: java.lang.Object;
if v != v goto label;
return 1;
label:
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v == v goto label;
return 0;
label:
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
if v == v goto label;
return 0;
label:
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
return 1;
}
public int hashCode()
{
int v, v, v, v, v, v, v, v, v, v, v, v, v;
net.bytebuddy.implementation.HashCodeMethod$OffsetProvider v;
net.bytebuddy.matcher.ElementMatcher$Junction v, v;
net.bytebuddy.implementation.HashCodeMethod v;
java.lang.Class v;
v := @this: net.bytebuddy.implementation.HashCodeMethod;
v = virtualinvoke v.<net.bytebuddy.implementation.HashCodeMethod: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: int hashCode()>();
v = v * 31;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.implementation.HashCodeMethod$OffsetProvider offsetProvider>;
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = v + v;
v = v * 31;
v = v.<net.bytebuddy.implementation.HashCodeMethod: int multiplier>;
v = v + v;
v = v * 31;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction ignored>;
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = v + v;
v = v * 31;
v = v.<net.bytebuddy.implementation.HashCodeMethod: net.bytebuddy.matcher.ElementMatcher$Junction nonNullable>;
v = virtualinvoke v.<java.lang.Object: int hashCode()>();
v = v + v;
return v;
}
}