executeCond ::
  Options ->
  SharedContext ->
  JVMCrucibleContext ->
  CrucibleMethodSpecIR ->
  StateSpec ->
  OverrideMatcher CJ.JVM w ()
executeCond opts sc cc cs ss =
  do refreshTerms sc ss
     traverse_ (executeAllocation opts cc) (Map.assocs (ss ^. MS.csAllocs))
     traverse_ (executePointsTo opts sc cc cs) (ss ^. MS.csPointsTos)
     traverse_ (executeSetupCondition opts sc cc cs) (ss ^. MS.csConditions)


-- | Allocate fresh variables for all of the "fresh" vars
-- used in this phase and add them to the term substitution.
executeCond ::
  Options ->
  SharedContext ->
  JVMCrucibleContext ->
  CrucibleMethodSpecIR ->
  StateSpec ->
  OverrideMatcher CJ.JVM w ()
executeCond opts sc cc cs ss =
  do refreshTerms sc ss
     traverse_ (executeAllocation opts cc) (Map.assocs (ss ^. MS.csAllocs))
     traverse_ (executePointsTo opts sc cc cs) (ss ^. MS.csPointsTos)
     traverse_ (executeSetupCondition opts sc cc cs) (ss ^. MS.csConditions)


-- | Allocate fresh variables for all of the "fresh" vars
-- used in this phase and add them to the term substitution.
executeCond opts sc cc cs ss =
  do refreshTerms sc ss
     traverse_ (executeAllocation opts cc) (Map.assocs (ss ^. MS.csAllocs))
     traverse_ (executePointsTo opts sc cc cs) (ss ^. MS.csPointsTos)
     traverse_ (executeSetupCondition opts sc cc cs) (ss ^. MS.csConditions)


-- | Allocate fresh variables for all of the "fresh" vars
-- used in this phase and add them to the term substitution.