}
DecimalQuantity withdrawQuantity =
(lotQuantity.gteq(quantityLeftToWithdraw)) ?
quantityLeftToWithdraw : lotQuantity;
lot.sell(withdrawQuantity);
lot.addAllocation(factory.createAllocation(withdrawQuantity.negate()));
quantityLeftToWithdraw = quantityLeftToWithdraw.minus(withdrawQuantity);
if (quantityLeftToWithdraw.isZero()) {
break;
}
}