final class com.google.common.collect.CartesianList extends java.util.AbstractList implements java.util.RandomAccess
{
private final transient com.google.common.collect.ImmutableList axes;
private final transient int[] axesSizeProduct;
static java.util.List create(java.util.List)
{
java.util.Iterator v;
com.google.common.collect.CartesianList v;
java.util.List v;
com.google.common.collect.ImmutableList v, v, v;
int v;
java.lang.Object v;
boolean v, v;
com.google.common.collect.ImmutableList$Builder v;
v := @parameter: java.util.List;
v = new com.google.common.collect.ImmutableList$Builder;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<com.google.common.collect.ImmutableList$Builder: void <init>(int)>(v);
v = interfaceinvoke v.<java.util.List: 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 = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList copyOf(java.util.Collection)>(v);
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v == 0 goto label;
v = staticinvoke <com.google.common.collect.ImmutableList: com.google.common.collect.ImmutableList of()>();
return v;
label:
virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList$Builder add(java.lang.Object)>(v);
goto label;
label:
v = new com.google.common.collect.CartesianList;
v = virtualinvoke v.<com.google.common.collect.ImmutableList$Builder: com.google.common.collect.ImmutableList build()>();
specialinvoke v.<com.google.common.collect.CartesianList: void <init>(com.google.common.collect.ImmutableList)>(v);
return v;
}
void <init>(com.google.common.collect.ImmutableList)
{
java.lang.IllegalArgumentException v;
com.google.common.collect.CartesianList v;
com.google.common.collect.ImmutableList v;
int[] v;
int v, v, v, v, v, v, v, v, v;
java.lang.ArithmeticException v;
java.lang.Object v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: com.google.common.collect.ImmutableList;
specialinvoke v.<java.util.AbstractList: void <init>()>();
v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes> = v;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
v = v + 1;
v = newarray (int)[v];
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
v[v] = 1;
label:
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
v = v - 1;
label:
if v < 0 goto label;
v = v + 1;
v = v[v];
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.List: int size()>();
v = staticinvoke <com.google.common.math.IntMath: int checkedMultiply(int,int)>(v, v);
v[v] = v;
v = v - 1;
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Cartesian product too large; must have size at most Integer.MAX_VALUE");
throw v;
label:
v.<com.google.common.collect.CartesianList: int[] axesSizeProduct> = v;
return;
catch java.lang.ArithmeticException from label to label with label;
}
private int getAxisIndexForProductIndex(int, int)
{
com.google.common.collect.CartesianList v;
com.google.common.collect.ImmutableList v;
int[] v;
int v, v, v, v, v, v, v;
java.lang.Object v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: int;
v := @parameter: int;
v = v.<com.google.common.collect.CartesianList: int[] axesSizeProduct>;
v = v + 1;
v = v[v];
v = v / v;
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.List: int size()>();
v = v % v;
return v;
}
public int indexOf(java.lang.Object)
{
java.util.ListIterator v;
com.google.common.collect.ImmutableList v, v;
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v;
com.google.common.collect.CartesianList v;
java.lang.Object v, v, v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: java.lang.Object;
v = v instanceof java.util.List;
if v != 0 goto label;
v = (int) -1;
return v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
if v == v goto label;
v = (int) -1;
return v;
label:
v = interfaceinvoke v.<java.util.List: java.util.ListIterator listIterator()>();
v = 0;
label:
v = interfaceinvoke v.<java.util.ListIterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.ListIterator: int nextIndex()>();
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.ListIterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.List: int indexOf(java.lang.Object)>(v);
v = (int) -1;
if v != v goto label;
v = (int) -1;
return v;
label:
v = v.<com.google.common.collect.CartesianList: int[] axesSizeProduct>;
v = v + 1;
v = v[v];
v = v * v;
v = v + v;
goto label;
label:
return v;
}
public int lastIndexOf(java.lang.Object)
{
java.util.ListIterator v;
com.google.common.collect.ImmutableList v, v;
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v;
com.google.common.collect.CartesianList v;
java.lang.Object v, v, v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: java.lang.Object;
v = v instanceof java.util.List;
if v != 0 goto label;
v = (int) -1;
return v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
if v == v goto label;
v = (int) -1;
return v;
label:
v = interfaceinvoke v.<java.util.List: java.util.ListIterator listIterator()>();
v = 0;
label:
v = interfaceinvoke v.<java.util.ListIterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.ListIterator: int nextIndex()>();
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.ListIterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.List: int lastIndexOf(java.lang.Object)>(v);
v = (int) -1;
if v != v goto label;
v = (int) -1;
return v;
label:
v = v.<com.google.common.collect.CartesianList: int[] axesSizeProduct>;
v = v + 1;
v = v[v];
v = v * v;
v = v + v;
goto label;
label:
return v;
}
public com.google.common.collect.ImmutableList get(int)
{
com.google.common.collect.CartesianList v;
com.google.common.collect.CartesianList$1 v;
int v, v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: int;
v = virtualinvoke v.<com.google.common.collect.CartesianList: int size()>();
staticinvoke <com.google.common.base.Preconditions: int checkElementIndex(int,int)>(v, v);
v = new com.google.common.collect.CartesianList$1;
specialinvoke v.<com.google.common.collect.CartesianList$1: void <init>(com.google.common.collect.CartesianList,int)>(v, v);
return v;
}
public int size()
{
int v;
com.google.common.collect.CartesianList v;
int[] v;
v := @this: com.google.common.collect.CartesianList;
v = v.<com.google.common.collect.CartesianList: int[] axesSizeProduct>;
v = v[0];
return v;
}
public boolean contains(java.lang.Object)
{
java.util.Iterator v;
com.google.common.collect.CartesianList v;
com.google.common.collect.ImmutableList v, v;
int v, v, v;
java.lang.Object v, v, v;
boolean v, v, v;
v := @this: com.google.common.collect.CartesianList;
v := @parameter: java.lang.Object;
v = v instanceof java.util.List;
if v != 0 goto label;
return 0;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: int size()>();
if v == v goto label;
return 0;
label:
v = 0;
v = interfaceinvoke v.<java.util.List: 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 = v.<com.google.common.collect.CartesianList: com.google.common.collect.ImmutableList axes>;
v = virtualinvoke v.<com.google.common.collect.ImmutableList: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
}