public final class com.google.common.testing.NullPointerTester extends java.lang.Object
{
private final com.google.common.collect.ClassToInstanceMap defaults;
private final java.util.List ignoredMembers;
private com.google.common.testing.NullPointerTester$ExceptionTypePolicy policy;
private static final com.google.common.collect.ImmutableSet NULLABLE_ANNOTATION_SIMPLE_NAMES;
private static final com.google.common.testing.NullPointerTester$NullnessAnnotationReader NULLNESS_ANNOTATION_READER;
public void <init>()
{
com.google.common.testing.NullPointerTester v;
java.lang.NoSuchMethodException v;
com.google.common.testing.NullPointerTester$ExceptionTypePolicy v;
java.lang.Class[] v;
java.util.ArrayList v;
com.google.common.collect.MutableClassToInstanceMap v;
java.util.List v;
java.lang.Class v;
java.lang.reflect.Method v;
v := @this: com.google.common.testing.NullPointerTester;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <com.google.common.collect.MutableClassToInstanceMap: com.google.common.collect.MutableClassToInstanceMap create()>();
v.<com.google.common.testing.NullPointerTester: com.google.common.collect.ClassToInstanceMap defaults> = v;
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayList()>();
v.<com.google.common.testing.NullPointerTester: java.util.List ignoredMembers> = v;
v = <com.google.common.testing.NullPointerTester$ExceptionTypePolicy: com.google.common.testing.NullPointerTester$ExceptionTypePolicy NPE_OR_UOE>;
v.<com.google.common.testing.NullPointerTester: com.google.common.testing.NullPointerTester$ExceptionTypePolicy policy> = v;
label:
v = v.<com.google.common.testing.NullPointerTester: java.util.List ignoredMembers>;
v = class "Lcom/google/common/base/Converter;";
v = newarray (java.lang.Class)[1];
v[0] = class "Ljava/lang/Object;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getMethod(java.lang.String,java.lang.Class[])>("apply", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
return;
catch java.lang.NoSuchMethodException from label to label with label;
}
public com.google.common.testing.NullPointerTester setDefault(java.lang.Class, java.lang.Object)
{
com.google.common.collect.ClassToInstanceMap v;
com.google.common.testing.NullPointerTester v;
java.lang.Class v;
java.lang.Object v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Object;
v = v.<com.google.common.testing.NullPointerTester: com.google.common.collect.ClassToInstanceMap defaults>;
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
interfaceinvoke v.<com.google.common.collect.ClassToInstanceMap: java.lang.Object putInstance(java.lang.Class,java.lang.Object)>(v, v);
return v;
}
public com.google.common.testing.NullPointerTester ignore(java.lang.reflect.Method)
{
java.util.List v;
com.google.common.testing.NullPointerTester v;
java.lang.Object v;
java.lang.reflect.Method v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.reflect.Method;
v = v.<com.google.common.testing.NullPointerTester: java.util.List ignoredMembers>;
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return v;
}
public com.google.common.testing.NullPointerTester ignore(java.lang.reflect.Constructor)
{
java.util.List v;
com.google.common.testing.NullPointerTester v;
java.lang.Object v;
java.lang.reflect.Constructor v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.reflect.Constructor;
v = v.<com.google.common.testing.NullPointerTester: java.util.List ignoredMembers>;
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
return v;
}
public void testConstructors(java.lang.Class, com.google.common.testing.NullPointerTester$Visibility)
{
com.google.common.testing.NullPointerTester v;
java.lang.reflect.Constructor v;
com.google.common.testing.NullPointerTester$Visibility v;
java.lang.reflect.Constructor[] v;
int v, v;
java.lang.Class v;
boolean v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v := @parameter: com.google.common.testing.NullPointerTester$Visibility;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor[] getDeclaredConstructors()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$Visibility: boolean isVisible(java.lang.reflect.Member)>(v);
if v == 0 goto label;
v = specialinvoke v.<com.google.common.testing.NullPointerTester: boolean isIgnored(java.lang.reflect.Member)>(v);
if v != 0 goto label;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testConstructor(java.lang.reflect.Constructor)>(v);
label:
v = v + 1;
goto label;
label:
return;
}
public void testAllPublicConstructors(java.lang.Class)
{
java.lang.Class v;
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v = <com.google.common.testing.NullPointerTester$Visibility: com.google.common.testing.NullPointerTester$Visibility PUBLIC>;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testConstructors(java.lang.Class,com.google.common.testing.NullPointerTester$Visibility)>(v, v);
return;
}
public void testStaticMethods(java.lang.Class, com.google.common.testing.NullPointerTester$Visibility)
{
java.util.Iterator v;
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
java.lang.Iterable v;
java.lang.Class v;
java.lang.Object v;
boolean v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v := @parameter: com.google.common.testing.NullPointerTester$Visibility;
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$Visibility: java.lang.Iterable getStaticMethods(java.lang.Class)>(v);
v = interfaceinvoke v.<java.lang.Iterable: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<com.google.common.testing.NullPointerTester: boolean isIgnored(java.lang.reflect.Member)>(v);
if v != 0 goto label;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testMethod(java.lang.Object,java.lang.reflect.Method)>(null, v);
goto label;
label:
return;
}
public void testAllPublicStaticMethods(java.lang.Class)
{
java.lang.Class v;
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v = <com.google.common.testing.NullPointerTester$Visibility: com.google.common.testing.NullPointerTester$Visibility PUBLIC>;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testStaticMethods(java.lang.Class,com.google.common.testing.NullPointerTester$Visibility)>(v, v);
return;
}
public void testInstanceMethods(java.lang.Object, com.google.common.testing.NullPointerTester$Visibility)
{
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
com.google.common.collect.ImmutableList v;
java.lang.Class v;
java.lang.Object v, v;
com.google.common.collect.UnmodifiableIterator v;
boolean v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Object;
v := @parameter: com.google.common.testing.NullPointerTester$Visibility;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<com.google.common.testing.NullPointerTester: com.google.common.collect.ImmutableList getInstanceMethodsToTest(java.lang.Class,com.google.common.testing.NullPointerTester$Visibility)>(v, v);
v = virtualinvoke v.<com.google.common.collect.ImmutableList: com.google.common.collect.UnmodifiableIterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testMethod(java.lang.Object,java.lang.reflect.Method)>(v, v);
goto label;
label:
return;
}
com.google.common.collect.ImmutableList getInstanceMethodsToTest(java.lang.Class, com.google.common.testing.NullPointerTester$Visibility)
{
java.util.Iterator v;
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
java.lang.Iterable v;
com.google.common.collect.ImmutableList v;
java.lang.Class v;
java.lang.Object v;
boolean v, v;
com.google.common.collect.ImmutableList$Builder v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Class;
v := @parameter: com.google.common.testing.NullPointerTester$Visibility;
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList$Builder builder()>();
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$Visibility: java.lang.Iterable getInstanceMethods(java.lang.Class)>(v);
v = interfaceinvoke v.<java.lang.Iterable: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<com.google.common.testing.NullPointerTester: boolean isIgnored(java.lang.reflect.Member)>(v);
if v != 0 goto label;
virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList$Builder add(java.lang.Object)>(v);
goto label;
label:
v = virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList build()>();
return v;
}
public void testAllPublicInstanceMethods(java.lang.Object)
{
java.lang.Object v;
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$Visibility v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Object;
v = <com.google.common.testing.NullPointerTester$Visibility: com.google.common.testing.NullPointerTester$Visibility PUBLIC>;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testInstanceMethods(java.lang.Object,com.google.common.testing.NullPointerTester$Visibility)>(v, v);
return;
}
public void testMethod(java.lang.Object, java.lang.reflect.Method)
{
com.google.common.testing.NullPointerTester v;
int v, v;
java.lang.Class[] v;
java.lang.Object v;
java.lang.reflect.Method v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testMethodParameter(java.lang.Object,java.lang.reflect.Method,int)>(v, v, v);
v = v + 1;
goto label;
label:
return;
}
public void testConstructor(java.lang.reflect.Constructor)
{
com.google.common.testing.NullPointerTester v;
java.lang.Class[] v;
java.lang.reflect.Constructor v;
int v, v, v;
java.lang.Class v, v;
java.lang.String v;
boolean v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.reflect.Constructor;
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class getDeclaringClass()>();
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isStatic(int)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.Class: java.lang.Class getEnclosingClass()>();
if v != null goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "Cannot test constructor of non-static inner class: %s", v);
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class[] getParameterTypes()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
virtualinvoke v.<com.google.common.testing.NullPointerTester: void testConstructorParameter(java.lang.reflect.Constructor,int)>(v, v);
v = v + 1;
goto label;
label:
return;
}
public void testMethodParameter(java.lang.Object, java.lang.reflect.Method, int)
{
com.google.common.testing.NullPointerTester v;
com.google.common.reflect.Invokable v;
int v;
java.lang.Class v;
java.lang.Object v;
java.lang.reflect.Method v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.reflect.Method;
v := @parameter: int;
virtualinvoke v.<java.lang.reflect.Method: void setAccessible(boolean)>(1);
v = staticinvoke <com.google.common.testing.NullPointerTester: com.google.common.reflect.Invokable invokable(java.lang.Object,java.lang.reflect.Method)>(v, v);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
specialinvoke v.<com.google.common.testing.NullPointerTester: void testParameter(java.lang.Object,com.google.common.reflect.Invokable,int,java.lang.Class)>(v, v, v, v);
return;
}
public void testConstructorParameter(java.lang.reflect.Constructor, int)
{
com.google.common.testing.NullPointerTester v;
com.google.common.reflect.Invokable v;
int v;
java.lang.Class v;
java.lang.reflect.Constructor v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.reflect.Constructor;
v := @parameter: int;
virtualinvoke v.<java.lang.reflect.Constructor: void setAccessible(boolean)>(1);
v = staticinvoke <com.google.common.reflect.Invokable: com.google.common.reflect.Invokable 'from'(java.lang.reflect.Constructor)>(v);
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class getDeclaringClass()>();
specialinvoke v.<com.google.common.testing.NullPointerTester: void testParameter(java.lang.Object,com.google.common.reflect.Invokable,int,java.lang.Class)>(null, v, v, v);
return;
}
private void testParameter(java.lang.Object, com.google.common.reflect.Invokable, int, java.lang.Class)
{
java.lang.Throwable v;
java.lang.Object[] v, v;
com.google.common.testing.NullPointerTester$ExceptionTypePolicy v;
com.google.common.reflect.TypeToken v;
java.lang.Integer v;
com.google.common.collect.ImmutableList v, v;
int v;
java.lang.String v, v, v, v, v;
boolean v, v, v, v;
java.lang.IllegalAccessException v;
com.google.common.testing.NullPointerTester v;
junit.framework.AssertionFailedError v;
java.lang.RuntimeException v;
java.lang.reflect.InvocationTargetException v;
com.google.common.reflect.Invokable v;
java.lang.Class v;
java.lang.Object v, v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.Object;
v := @parameter: com.google.common.reflect.Invokable;
v := @parameter: int;
v := @parameter: java.lang.Class;
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean isAndroid()>();
if v == 0 goto label;
v = staticinvoke <com.google.common.reflect.Reflection: java.lang.String getPackageName(java.lang.Class)>(v);
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("com.google.common");
if v == 0 goto label;
return;
label:
v = virtualinvoke v.<com.google.common.reflect.Invokable: com.google.common.collect.ImmutableList getParameters()>();
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean isPrimitiveOrNullable(com.google.common.reflect.Parameter)>(v);
if v == 0 goto label;
return;
label:
v = specialinvoke v.<com.google.common.testing.NullPointerTester: java.lang.Object[] buildParamList(com.google.common.reflect.Invokable,int)>(v, v);
label:
virtualinvoke v.<com.google.common.reflect.Invokable: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(v, v);
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,com.google.common.reflect.Invokable,java.lang.String,java.lang.Class)>(v, v, v, 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[])>("No exception thrown for parameter at index \u from \u0001\u for \u0001");
staticinvoke <junit.framework.Assert: void fail(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getCause()>();
v = v.<com.google.common.testing.NullPointerTester: com.google.common.testing.NullPointerTester$ExceptionTypePolicy policy>;
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$ExceptionTypePolicy: boolean isExpectedType(java.lang.Throwable)>(v);
if v == 0 goto label;
return;
label:
v = new junit.framework.AssertionFailedError;
v = newarray (java.lang.Object)[5];
v[0] = v;
v = virtualinvoke v.<com.google.common.reflect.Invokable: com.google.common.collect.ImmutableList getParameters()>();
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = virtualinvoke v.<com.google.common.reflect.Parameter: com.google.common.reflect.TypeToken getType()>();
v[1] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
v[3] = v;
v[4] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("wrong exception thrown from %s when passing null to %s parameter at index %s.%nFull parameters: %s%nActual exception message: %s", v);
specialinvoke v.<junit.framework.AssertionFailedError: void <init>(java.lang.String)>(v);
virtualinvoke v.<junit.framework.AssertionFailedError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
}
private java.lang.Object[] buildParamList(com.google.common.reflect.Invokable, int)
{
java.lang.Object[] v;
com.google.common.reflect.TypeToken v, v;
com.google.common.collect.ImmutableList v;
int v, v, v, v;
java.lang.String v;
boolean v, v;
com.google.common.testing.NullPointerTester v;
com.google.common.reflect.Invokable v;
java.lang.Object v, v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: com.google.common.reflect.Invokable;
v := @parameter: int;
v = virtualinvoke v.<com.google.common.reflect.Invokable: com.google.common.collect.ImmutableList getParameters()>();
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
v = newarray (java.lang.Object)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
if v == v goto label;
v = virtualinvoke v.<com.google.common.reflect.Parameter: com.google.common.reflect.TypeToken getType()>();
v = specialinvoke v.<com.google.common.testing.NullPointerTester: java.lang.Object getDefaultValue(com.google.common.reflect.TypeToken)>(v);
v[v] = v;
v = virtualinvoke v.<com.google.common.reflect.Parameter: com.google.common.reflect.TypeToken getType()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (com.google.common.reflect.TypeToken)>(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[])>("Can\'t find or create a sample instance for type \'\u0001\'; please provide one using NullPointerTester.setDefault()");
v = v[v];
if v != null goto label;
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean isNullable(com.google.common.reflect.Parameter)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <junit.framework.Assert: void assertTrue(java.lang.String,boolean)>(v, v);
label:
v = v + 1;
goto label;
label:
return v;
}
private java.lang.Object getDefaultValue(com.google.common.reflect.TypeToken)
{
com.google.common.reflect.TypeToken v, v, v, v, v;
com.google.common.collect.ClassToInstanceMap v;
boolean v;
com.google.common.base.Converter v;
com.google.common.testing.NullPointerTester v;
java.lang.reflect.TypeVariable v, v;
java.lang.reflect.Type v, v;
java.lang.reflect.TypeVariable[] v, v;
java.lang.Class v, v, v, v, v, v, v, v, v;
java.lang.Object v, v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: com.google.common.reflect.TypeToken;
v = v.<com.google.common.testing.NullPointerTester: com.google.common.collect.ClassToInstanceMap defaults>;
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
v = interfaceinvoke v.<com.google.common.collect.ClassToInstanceMap: java.lang.Object getInstance(java.lang.Class)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
v = staticinvoke <com.google.common.testing.ArbitraryInstances: java.lang.Object get(java.lang.Class)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
if v != class "Ljava/lang/Class;" goto label;
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.reflect.Type getType()>();
v = staticinvoke <com.google.common.testing.NullPointerTester: com.google.common.reflect.TypeToken getFirstTypeParameter(java.lang.reflect.Type)>(v);
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
return v;
label:
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
if v != class "Lcom/google/common/reflect/TypeToken;" goto label;
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.reflect.Type getType()>();
v = staticinvoke <com.google.common.testing.NullPointerTester: com.google.common.reflect.TypeToken getFirstTypeParameter(java.lang.reflect.Type)>(v);
return v;
label:
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
if v != class "Lcom/google/common/base/Converter;" goto label;
v = class "Lcom/google/common/base/Converter;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.TypeVariable[] getTypeParameters()>();
v = v[0];
v = virtualinvoke v.<com.google.common.reflect.TypeToken: com.google.common.reflect.TypeToken resolveType(java.lang.reflect.Type)>(v);
v = class "Lcom/google/common/base/Converter;";
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.TypeVariable[] getTypeParameters()>();
v = v[1];
v = virtualinvoke v.<com.google.common.reflect.TypeToken: com.google.common.reflect.TypeToken resolveType(java.lang.reflect.Type)>(v);
v = specialinvoke v.<com.google.common.testing.NullPointerTester: com.google.common.base.Converter defaultConverter(com.google.common.reflect.TypeToken,com.google.common.reflect.TypeToken)>(v, v);
return v;
label:
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v == 0 goto label;
v = specialinvoke v.<com.google.common.testing.NullPointerTester: java.lang.Object newDefaultReturningProxy(com.google.common.reflect.TypeToken)>(v);
return v;
label:
return null;
}
private com.google.common.base.Converter defaultConverter(com.google.common.reflect.TypeToken, com.google.common.reflect.TypeToken)
{
com.google.common.testing.NullPointerTester$1 v;
com.google.common.testing.NullPointerTester v;
com.google.common.reflect.TypeToken v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: com.google.common.reflect.TypeToken;
v := @parameter: com.google.common.reflect.TypeToken;
v = new com.google.common.testing.NullPointerTester$1;
specialinvoke v.<com.google.common.testing.NullPointerTester$1: void <init>(com.google.common.testing.NullPointerTester,com.google.common.reflect.TypeToken,com.google.common.reflect.TypeToken)>(v, v, v);
return v;
}
private static com.google.common.reflect.TypeToken getFirstTypeParameter(java.lang.reflect.Type)
{
java.lang.reflect.Type v, v;
java.lang.reflect.Type[] v;
com.google.common.reflect.TypeToken v, v;
boolean v;
v := @parameter: java.lang.reflect.Type;
v = v instanceof java.lang.reflect.ParameterizedType;
if v == 0 goto label;
v = interfaceinvoke v.<java.lang.reflect.ParameterizedType: java.lang.reflect.Type[] getActualTypeArguments()>();
v = v[0];
v = staticinvoke <com.google.common.reflect.TypeToken: com.google.common.reflect.TypeToken of(java.lang.reflect.Type)>(v);
return v;
label:
v = staticinvoke <com.google.common.reflect.TypeToken: com.google.common.reflect.TypeToken of(java.lang.Class)>(class "Ljava/lang/Object;");
return v;
}
private java.lang.Object newDefaultReturningProxy(com.google.common.reflect.TypeToken)
{
com.google.common.testing.NullPointerTester v;
com.google.common.testing.NullPointerTester$2 v;
java.lang.Object v;
com.google.common.reflect.TypeToken v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: com.google.common.reflect.TypeToken;
v = new com.google.common.testing.NullPointerTester$2;
specialinvoke v.<com.google.common.testing.NullPointerTester$2: void <init>(com.google.common.testing.NullPointerTester)>(v);
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$2: java.lang.Object newProxy(com.google.common.reflect.TypeToken)>(v);
return v;
}
private static com.google.common.reflect.Invokable invokable(java.lang.Object, java.lang.reflect.Method)
{
com.google.common.reflect.Invokable v, v;
java.lang.Class v;
java.lang.Object v;
com.google.common.reflect.TypeToken v;
java.lang.reflect.Method v;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.reflect.Method;
if v != null goto label;
v = staticinvoke <com.google.common.reflect.Invokable: com.google.common.reflect.Invokable 'from'(java.lang.reflect.Method)>(v);
return v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <com.google.common.reflect.TypeToken: com.google.common.reflect.TypeToken of(java.lang.Class)>(v);
v = virtualinvoke v.<com.google.common.reflect.TypeToken: com.google.common.reflect.Invokable method(java.lang.reflect.Method)>(v);
return v;
}
static boolean isPrimitiveOrNullable(com.google.common.reflect.Parameter)
{
com.google.common.reflect.Parameter v;
java.lang.Class v;
com.google.common.reflect.TypeToken v;
boolean v, v, v;
v := @parameter: com.google.common.reflect.Parameter;
v = virtualinvoke v.<com.google.common.reflect.Parameter: com.google.common.reflect.TypeToken getType()>();
v = virtualinvoke v.<com.google.common.reflect.TypeToken: java.lang.Class getRawType()>();
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v != 0 goto label;
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean isNullable(com.google.common.reflect.Parameter)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static boolean isNullable(com.google.common.reflect.Invokable)
{
com.google.common.reflect.Invokable v;
boolean v;
com.google.common.testing.NullPointerTester$NullnessAnnotationReader v;
v := @parameter: com.google.common.reflect.Invokable;
v = <com.google.common.testing.NullPointerTester: com.google.common.testing.NullPointerTester$NullnessAnnotationReader NULLNESS_ANNOTATION_READER>;
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$NullnessAnnotationReader: boolean isNullable(com.google.common.reflect.Invokable)>(v);
return v;
}
static boolean isNullable(com.google.common.reflect.Parameter)
{
com.google.common.reflect.Parameter v;
boolean v;
com.google.common.testing.NullPointerTester$NullnessAnnotationReader v;
v := @parameter: com.google.common.reflect.Parameter;
v = <com.google.common.testing.NullPointerTester: com.google.common.testing.NullPointerTester$NullnessAnnotationReader NULLNESS_ANNOTATION_READER>;
v = virtualinvoke v.<com.google.common.testing.NullPointerTester$NullnessAnnotationReader: boolean isNullable(com.google.common.reflect.Parameter)>(v);
return v;
}
private static boolean containsNullable(java.lang.'annotation'.Annotation[])
{
com.google.common.collect.ImmutableSet v;
java.lang.'annotation'.Annotation[] v;
int v, v;
java.lang.'annotation'.Annotation v;
java.lang.Class v;
java.lang.String v;
boolean v;
v := @parameter: java.lang.'annotation'.Annotation[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = <com.google.common.testing.NullPointerTester: com.google.common.collect.ImmutableSet NULLABLE_ANNOTATION_SIMPLE_NAMES>;
v = interfaceinvoke v.<java.lang.'annotation'.Annotation: java.lang.Class annotationType()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = virtualinvoke v.<com.google.common.collect.ImmutableSet: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
private boolean isIgnored(java.lang.reflect.Member)
{
java.util.List v;
com.google.common.testing.NullPointerTester v;
java.lang.reflect.Member v;
boolean v, v, v, v;
v := @this: com.google.common.testing.NullPointerTester;
v := @parameter: java.lang.reflect.Member;
v = interfaceinvoke v.<java.lang.reflect.Member: boolean isSynthetic()>();
if v != 0 goto label;
v = v.<com.google.common.testing.NullPointerTester: java.util.List ignoredMembers>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean isEquals(java.lang.reflect.Member)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static boolean isEquals(java.lang.reflect.Member)
{
java.lang.reflect.Member v;
java.lang.Class[] v;
int v;
java.lang.Class v;
java.lang.String v;
boolean v, v, v;
v := @parameter: java.lang.reflect.Member;
v = v instanceof java.lang.reflect.Method;
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean contentEquals(java.lang.CharSequence)>("equals");
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
if v == 1 goto label;
return 0;
label:
v = v[0];
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(class "Ljava/lang/Object;");
if v != 0 goto label;
return 0;
label:
return 1;
}
private static boolean annotatedTypeExists()
{
java.lang.ClassNotFoundException v;
label:
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("java.lang.reflect.AnnotatedType");
label:
goto label;
label:
v := @caughtexception;
return 0;
label:
return 1;
catch java.lang.ClassNotFoundException from label to label with label;
}
private static boolean isAndroid()
{
java.lang.Object v;
java.lang.String v;
boolean v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String,java.lang.String)>("java.runtime.name", "");
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("Android");
return v;
}
static void <clinit>()
{
com.google.common.collect.ImmutableSet v;
boolean v;
com.google.common.testing.NullPointerTester$NullnessAnnotationReader v;
v = staticinvoke <com.google.common.collect.ImmutableSet: com.google.common.collect.ImmutableSet of(java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)>("CheckForNull", "Nullable", "NullableDecl", "NullableType");
<com.google.common.testing.NullPointerTester: com.google.common.collect.ImmutableSet NULLABLE_ANNOTATION_SIMPLE_NAMES> = v;
v = staticinvoke <com.google.common.testing.NullPointerTester: boolean annotatedTypeExists()>();
if v == 0 goto label;
v = <com.google.common.testing.NullPointerTester$NullnessAnnotationReader: com.google.common.testing.NullPointerTester$NullnessAnnotationReader FROM_DECLARATION_AND_TYPE_USE_ANNOTATIONS>;
goto label;
label:
v = <com.google.common.testing.NullPointerTester$NullnessAnnotationReader: com.google.common.testing.NullPointerTester$NullnessAnnotationReader FROM_DECLARATION_ANNOTATIONS_ONLY>;
label:
<com.google.common.testing.NullPointerTester: com.google.common.testing.NullPointerTester$NullnessAnnotationReader NULLNESS_ANNOTATION_READER> = v;
return;
}
}