if ( isBusy() || !isActive() || getAvailableStorage() < job.getByteTotal() )
return null;
IStorageGrid sg = g.getCache( IStorageGrid.class );
IMEInventory<IAEItemStack> storage = sg.getItemInventory();
MECraftingInventory ci = new MECraftingInventory( storage, true, false, false );
try
{
waitingFor.resetStatus();
((CraftingJob) job).tree.setJob( ci, this, src );
if ( ci.commit( src ) )
{
finalOutput = job.getOutput();
waiting = false;
isComplete = false;
markDirty();