branchIndex = next;
previousInstructions.add(PathInstruction.branch(instruction, true));
if (!breakIntoPaths(paths, previousInstructions, branchIndex, cfg, m, maxPaths))
return false;
previousInstructions.add(PathInstruction.branch(instruction, false));
if (!breakIntoPaths(paths, previousInstructions, nextIndex, cfg, m, maxPaths))
return false;
previousInstructions.add(new PathInstruction(instruction));
if (!breakIntoPaths(paths, previousInstructions, nextIndex, cfg, m, maxPaths))
return false;
previousInstructions.add(new PathInstruction(instruction));
paths.add(new CodePath(previousInstructions));
previousInstructions.remove(previousInstructions.size() - 1);