public boolean removeItem(Item item) {
    if (item.amount <= 0) {
      I.say("Removing null item... "+item.amount) ;
      new Exception().printStackTrace() ;
      return false ;
    }
    //
    //  Check to see if the item already exists-
    final Item oldItem = itemTable.get(item) ;
    if (oldItem == null) return false ;
    if (oldItem.amount <= item.amount) {
      itemTable.remove(item) ;
      if (owner != null) owner.afterTransaction(item, oldItem.amount) ;
      return false ;
    }
    final float newAmount = oldItem.amount - item.amount ;
    final Item entered = Item.withAmount(oldItem, newAmount) ;
    itemTable.put(entered, entered) ;
    if (owner != null) owner.afterTransaction(item, item.amount - newAmount) ;
    return true ;
  }