August 2024 Until now, "arcs" means a complete set of predicted and measured (from, to) pairs of line numbers. Branches were determined by finding "from" lines that appeared in more than one predicted arc. That scheme found branches that were not true branches, such as the lines in finally clauses that could jump to more than one place based on how the finally clause was reached. Now we are shifting to true branches. To do this, we are removing code that predicted arcs that aren't part of true branches. The ideal goal would be to only predict arcs that are part of branches, but a minimal goal is to stop predicting arcs that led to false branches. ie, it's ok to predict an arc if the arc is the only arc for a given "from" line. Those arcs will be discarded and won't lead to false branches. There are many tests that look odd now, because they were testing arc determination, but they have no branches. Or the interesting part of the tests were non-branch arcs, so they aren't visible in the tests anymore. parser.py likely is working harder than it needs to, since we don't need to find all arcs. The new code.co_branches() function might be good enough to replace it.