This is broken out from path to make room for the additional control flow analysis routines that are currently being worked on.