message: create new arrays
diff: @@ -299,12 +299,9 @@ export function process(
  }
  }
  - // Spreading firstValidSet would generally be unwanted but findUntilExhausted modifies it in place.
  - // The alternative would be that it creates a new one with each recursion leading to more new arrays.
  - // More arrays bad.
  if (
  processedSeasonalMods.length &&
  - !findUntilExhausted(processedSeasonalMods, [...firstValidSet])
  + !findUntilExhausted(processedSeasonalMods, firstValidSet)
  ) {
  continue;
  }
  @@ -624,7 +621,8 @@ function findUntilExhausted(needles: string[][], haystack: ProcessItem[]) {
  // for each possible used armor, recurse this function with remaining haystack and remaining needles
  return candidates.some((candidate) => {
  - haystack.splice(candidate, 1);
  - return findUntilExhausted(needles.slice(1), haystack);
  + const newHaystack = [...haystack];
  + newHaystack.splice(candidate, 1);
  + return findUntilExhausted(needles.slice(1), newHaystack);
  });
  }
  