@Override
	public boolean execute(MOB mob, List<String> commands, int metaFlags)
		throws java.io.IOException
	{
		Vector<String> origCmds=new XVector<String>(commands);
		final Environmental shopkeeper=CMLib.english().parseShopkeeper(mob,commands,"Borrow how much from whom?");
		if(shopkeeper==null)
			return false;
		final ShopKeeper SHOP=CMLib.coffeeShops().getShopKeeper(shopkeeper);
		if(!(SHOP instanceof Banker))
		{
			CMLib.commands().doCommandFail(mob,origCmds,L("You can not borrow from @x1.",shopkeeper.name()));
			return false;
		}
		if(commands.size()==0)
		{
			CMLib.commands().doCommandFail(mob,origCmds,L("Borrow how much?"));
			return false;
		}
		String str=CMParms.combine(commands,0);
		if(str.equalsIgnoreCase("all"))
			str=""+Integer.MAX_VALUE;
		final long numCoins=CMLib.english().numPossibleGold(null,str);
		final String currency=CMLib.english().numPossibleGoldCurrency(shopkeeper,str);
		final double denomination=CMLib.english().numPossibleGoldDenomination(shopkeeper,currency,str);
		Item thisThang=null;
		if((numCoins==0)||(denomination==0.0))
		{
			CMLib.commands().doCommandFail(mob,origCmds,L("Borrow how much?"));
			return false;
		}
		thisThang=CMLib.beanCounter().makeCurrency(currency,denomination,numCoins);

		if((thisThang==null)||(!CMLib.flags().canBeSeenBy(thisThang,mob)))
		{
			CMLib.commands().doCommandFail(mob,origCmds,L("That doesn't appear to be available.  Try LIST."));
			return false;
		}
		final String str2="<S-NAME> borrow(s) <O-NAME> from "+shopkeeper.name()+".";
		final CMMsg newMsg=CMClass.getMsg(mob,shopkeeper,thisThang,CMMsg.MSG_BORROW,str2);
		if(!mob.location().okMessage(mob,newMsg))
			return false;
		mob.location().send(mob,newMsg);
		return false;
	}