gt:       if (i > 0)
context: package android.support.v4.util;
  
  public class SparseArrayCompat<E>
    implements Cloneable
  {
    private static final Object DELETED = new Object();
    private boolean mGarbage = false;
    private int[] mKeys;
    private int mSize;
    private Object[] mValues;
  
    public SparseArrayCompat()
    {
      this(10);
    }
  
    public SparseArrayCompat(int paramInt)
    {
      if (paramInt == 0)
        this.mKeys = ContainerHelpers.EMPTY_INTS;
      for (this.mValues = ContainerHelpers.EMPTY_OBJECTS; ; this.mValues = new Object[paramInt])
      {
        this.mSize = 0;
        return;
        paramInt = ContainerHelpers.idealIntArraySize(paramInt);
        this.mKeys = new int[paramInt];
      }
    }
  
    private void gc()
    {
      int m = this.mSize;
      int j = 0;
      int[] arrayOfInt = this.mKeys;
      Object[] arrayOfObject = this.mValues;
      int i = 0;
      while (i < m)
      {
        Object localObject = arrayOfObject[i];
        int k = j;
        if (localObject != DELETED)
        {
          if (i != j)
          {
            arrayOfInt[j] = arrayOfInt[i];
            arrayOfObject[j] = localObject;
            arrayOfObject[i] = null;
          }
          k = j + 1;
        }
        i += 1;
        j = k;
      }
      this.mGarbage = false;
      this.mSize = j;
    }
  
    public void append(int paramInt, E paramE)
    {
      if ((this.mSize != 0) && (paramInt <= this.mKeys[(this.mSize - 1)]))
      {
        put(paramInt, paramE);
        return;
      }
      if ((this.mGarbage) && (this.mSize >= this.mKeys.length))
        gc();
      int i = this.mSize;
      if (i >= this.mKeys.length)
      {
        int j = ContainerHelpers.idealIntArraySize(i + 1);
        int[] arrayOfInt = new int[j];
        Object[] arrayOfObject = new Object[j];
        System.arraycopy(this.mKeys, 0, arrayOfInt, 0, this.mKeys.length);
        System.arraycopy(this.mValues, 0, arrayOfObject, 0, this.mValues.length);
        this.mKeys = arrayOfInt;
        this.mValues = arrayOfObject;
      }
      this.mKeys[i] = paramInt;
      this.mValues[i] = paramE;
      this.mSize = (i + 1);
    }
  
    public void clear()
    {
      int j = this.mSize;
      Object[] arrayOfObject = this.mValues;
      int i = 0;
      while (i < j)
      {
        arrayOfObject[i] = null;
        i += 1;
      }
      this.mSize = 0;
      this.mGarbage = false;
    }
  
    public SparseArrayCompat<E> clone()
    {
      Object localObject = null;
      try
      {
        SparseArrayCompat localSparseArrayCompat = (SparseArrayCompat)super.clone();
        localObject = localSparseArrayCompat;
        localSparseArrayCompat.mKeys = ((int[])this.mKeys.clone());
        localObject = localSparseArrayCompat;
        localSparseArrayCompat.mValues = ((Object[])this.mValues.clone());
        return localSparseArrayCompat;
      }
      catch (CloneNotSupportedException localCloneNotSupportedException)
      {
      }
      return localObject;
    }
  
    public void delete(int paramInt)
    {
      paramInt = ContainerHelpers.binarySearch(this.mKeys, this.mSize, paramInt);
      if ((paramInt >= 0) && (this.mValues[paramInt] != DELETED))
      {
        this.mValues[paramInt] = DELETED;
        this.mGarbage = true;
      }
    }
  
    public E get(int paramInt)
    {
      return get(paramInt, null);
    }
  
    public E get(int paramInt, E paramE)
    {
      paramInt = ContainerHelpers.binarySearch(this.mKeys, this.mSize, paramInt);
      if ((paramInt < 0) || (this.mValues[paramInt] == DELETED))
        return paramE;
      return this.mValues[paramInt];
    }
  
    public int indexOfKey(int paramInt)
    {
      if (this.mGarbage)
        gc();
      return ContainerHelpers.binarySearch(this.mKeys, this.mSize, paramInt);
    }
  
    public int indexOfValue(E paramE)
    {
      if (this.mGarbage)
        gc();
      int i = 0;
      while (i < this.mSize)
      {
        if (this.mValues[i] == paramE)
          return i;
        i += 1;
      }
      return -1;
    }
  
    public int keyAt(int paramInt)
    {
      if (this.mGarbage)
        gc();
      return this.mKeys[paramInt];
    }
  
    public void put(int paramInt, E paramE)
    {
      int i = ContainerHelpers.binarySearch(this.mKeys, this.mSize, paramInt);
      if (i >= 0)
      {
        this.mValues[i] = paramE;
        return;
      }
      int j = i ^ 0xFFFFFFFF;
      if ((j < this.mSize) && (this.mValues[j] == DELETED))
      {
        this.mKeys[j] = paramInt;
        this.mValues[j] = paramE;
        return;
      }
      i = j;
      if (this.mGarbage)
      {
        i = j;
        if (this.mSize >= this.mKeys.length)
        {
          gc();
          i = ContainerHelpers.binarySearch(this.mKeys, this.mSize, paramInt) ^ 0xFFFFFFFF;
        }
      }
      if (this.mSize >= this.mKeys.length)
      {
        j = ContainerHelpers.idealIntArraySize(this.mSize + 1);
        int[] arrayOfInt = new int[j];
        Object[] arrayOfObject = new Object[j];
        System.arraycopy(this.mKeys, 0, arrayOfInt, 0, this.mKeys.length);
        System.arraycopy(this.mValues, 0, arrayOfObject, 0, this.mValues.length);
        this.mKeys = arrayOfInt;
        this.mValues = arrayOfObject;
      }
      if (this.mSize - i != 0)
      {
        System.arraycopy(this.mKeys, i, this.mKeys, i + 1, this.mSize - i);
        System.arraycopy(this.mValues, i, this.mValues, i + 1, this.mSize - i);
      }
      this.mKeys[i] = paramInt;
      this.mValues[i] = paramE;
      this.mSize += 1;
    }
  
    public void remove(int paramInt)
    {
      delete(paramInt);
    }
  
    public void removeAt(int paramInt)
    {
      if (this.mValues[paramInt] != DELETED)
      {
        this.mValues[paramInt] = DELETED;
        this.mGarbage = true;
      }
    }
  
    public void removeAtRange(int paramInt1, int paramInt2)
    {
      paramInt2 = Math.min(this.mSize, paramInt1 + paramInt2);
      while (paramInt1 < paramInt2)
      {
        removeAt(paramInt1);
        paramInt1 += 1;
      }
    }
  
    public void setValueAt(int paramInt, E paramE)
    {
      if (this.mGarbage)
        gc();
      this.mValues[paramInt] = paramE;
    }
  
    public int size()
    {
      if (this.mGarbage)
        gc();
      return this.mSize;
    }
  
    public String toString()
    {
      if (size() <= 0)
        return "{}";
      StringBuilder localStringBuilder = new StringBuilder(this.mSize * 28);
      localStringBuilder.append('{');
      int i = 0;
      if (i < this.mSize)
      {
  