Reuse generateRequestTree and recurse to fill out failed instead of duplicating generateRequestTree and checkCrafting