public void put(int key, E value) {int i = binarySearch(mKeys, 0, mSize, key);if (i >= 0) {mValues[i] = value;} else {i = ~i;if (i < mSize && mValues[i] == DELETED) {mKeys[i] = key;mValues[i] = value;return;}if (mGarbage && mSize >= mKeys.length) {gc();i = ~binarySearch(mKeys, 0, mSize, key);}if (mSize >= mKeys.length) {int n = ArrayUtils.idealIntArraySize(mSize + 1);int[] nkeys = new int[n];Object[] nvalues = new Object[n];System.arraycopy(mKeys, 0, nkeys, 0, mKeys.length);System.arraycopy(mValues, 0, nvalues, 0, mValues.length);mKeys = nkeys;mValues = nvalues;}if (mSize - i != 0) {System.arraycopy(mKeys, i, mKeys, i + 1, mSize - i);System.arraycopy(mValues, i, mValues, i + 1, mSize - i);}mKeys[i] = key;mValues[i] = value;mSize++;}}

public virtual void put(int key, E value){int i = binarySearch(mKeys, 0, mSize, key);if (i >= 0){mValues[i] = value;}else{i = ~i;if (i < mSize && mValues[i] == DELETED){mKeys[i] = key;mValues[i] = value;return;}if (mGarbage && mSize >= mKeys.Length){gc();i = ~binarySearch(mKeys, 0, mSize, key);}if (mSize >= mKeys.Length){int n = android.util.@internal.ArrayUtils.idealIntArraySize(mSize + 1);int[] nkeys = new int[n];object[] nvalues = new object[n];System.Array.Copy(mKeys, 0, nkeys, 0, mKeys.Length);System.Array.Copy(mValues, 0, nvalues, 0, mValues.Length);mKeys = nkeys;mValues = nvalues;}if (mSize - i != 0){System.Array.Copy(mKeys, i, mKeys, i + 1, mSize - i);System.Array.Copy(mValues, i, mValues, i + 1, mSize - i);}mKeys[i] = key;mValues[i] = value;mSize++;}}
