code: private void checkCircularity(State state, Obligation obligation, int basicBlockId)
              throws ObligationAcquiredOrReleasedInLoopException {
          if (state.getPath().hasComponent(basicBlockId)) {
              throw new ObligationAcquiredOrReleasedInLoopException(obligation);
          }
      }
docs: Bail out of the analysis is an obligation is acquired or released in a
  loop.
  
  @param state
  a State to which an obligation is being added or removed
  @param obligation
  the Obligation being added or removed
  @param basicBlockId
  the id of the BasicBlock adding or removing the obligation