private V removeFromDataIndexOfKey(int dataIndexOfKey){
  int dataSize=this.size << 1;
  if (dataIndexOfKey < 0 || dataIndexOfKey >= dataSize) {
    return null;
  }
  V result=valueAtDataIndex(dataIndexOfKey + 1);
  Object[] data=this.data;
  int moved=dataSize - dataIndexOfKey - 2;
  if (moved != 0) {
    System.arraycopy(data,dataIndexOfKey + 2,data,dataIndexOfKey,moved);
  }
  this.size--;
  setData(dataSize - 2,null,null);
  return result;
}

private V removeFromDataIndexOfKey ( int dataIndexOfKey ) { int dataSize = this . size << 1 ; if ( dataIndexOfKey < 0 || dataIndexOfKey >= dataSize ) { return null ; } V result = valueAtDataIndex ( dataIndexOfKey + 1 ) ; Object [ ] data = this . data ; int moved = dataSize - dataIndexOfKey - 2 ; if ( moved != 0 ) { System . arraycopy ( data , dataIndexOfKey + 2 , data , dataIndexOfKey , moved ) ; } this . size -- ; setData ( dataSize - 2 , null , null ) ; return result ; }
removes the key / value mapping at the given data index of key , or ignored if the index is out of bounds .
