docs: public void addObligation(final Obligation obligation, int basicBlockId) throws ObligationAcquiredOrReleasedInLoopException {
          Map<ObligationSet, State> updatedStateMap = new HashMap<>();
          if (stateMap.isEmpty()) {
              State s = new State(factory);
              s.getObligationSet().add(obligation);
              updatedStateMap.put(s.getObligationSet(), s);
          } else {
              for (State state : stateMap.values()) {
                  checkCircularity(state, obligation, basicBlockId);
                  state.getObligationSet().add(obligation);
                  updatedStateMap.put(state.getObligationSet(), state);
  
              }
          }
          replaceMap(updatedStateMap);
      }