if (!breakIntoPaths(paths, previousInstructions, branchIndex, cfg, m, maxPaths))
return false;
previousInstructions.remove(previousInstructions.size() - 1);
if (!breakIntoPaths(paths, previousInstructions, nextIndex, cfg, m, maxPaths))
return false;
previousInstructions.remove(previousInstructions.size() - 1);
int nextIndex = cfg.succsOf(index).get(0);
previousInstructions.add(new PathInstruction(instruction));
if (!breakIntoPaths(paths, previousInstructions, nextIndex, cfg, m, maxPaths))
return false;
previousInstructions.remove(previousInstructions.size() - 1);