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 ) ; }
Add an obligation to every State in the StateSet .