@Override
public SimulationResult simulateRequest(ItemStack wanted) {
final Map<ItemIdentifier,Integer> used = new HashMap<ItemIdentifier,Integer>();
final Map<ItemIdentifier,Integer> missing = new HashMap<ItemIdentifier,Integer>();
RequestTree.simulate(ItemIdentifier.get(wanted).makeStack(wanted.stackSize), this, new RequestLog() {
@Override
public void handleMissingItems(Map<ItemIdentifier,Integer> items) {
for(Entry<ItemIdentifier,Integer>e:items.entrySet()) {
Integer count = missing.get(e.getKey());
if(count == null)