code: public ItemStack insert(ItemStack insert, int amount, boolean force)
  	{
  		if (insert.isEmpty())
  			return ItemStack.EMPTY;
  
  		if (!isItemValid(insert))
  			return insert;
  
  		ItemStacksMerger ism = new ItemUtils.ItemStacksMerger(insert, itemStack);
  		if (!ism.canMerge() || isFull())
  		{
  			if (!force)
  				return insert;
  
  			ItemStack slotStack = extract(ItemUtils.FULL_STACK);
  			ItemStack insertStack = insert.copy();
  			if (insert(insertStack, amount, false).isEmpty())
  			{
  				setItemStack(insert);
  				return slotStack;
  			}
  			else
  				return slotStack;
  		}
  
  		ism.merge(amount, getSlotStackLimit());
  		setItemStack(ism.into);
  
  		//if (hasChanged())
  		onSlotChanged();
  
  		return ism.merge;
  	}
docs: Inserts a specified <b>amount</b> of {@link ItemStack} into this {@link MalisisSlot}.<br>
  If <b>force</b> is <code>true</code>, the current <code>ItemStack</code> in the slot will be replaced if it cannot be merged.
  
  @param insert the itemStack to insert
  @param amount the amount to insert
  @param force whether the itemStack should be forced in the slot
  @return the itemStack that couldn't fit into the slot