However, this is easier said than done because of the huge underlying state space of potential artifacts and often requires innovative nontrivial optimizations, such as goal-directed search, branch and bound, complexityguided evolutionary approaches, clues based on textual features of examples, and offline indexing.