if (fact.isTop() || result.isBottom()) {  } else if (fact.isBottom() || result.isTop()) { copy(fact, result); } else {          HashMap<ObligationSet, State> updatedStateMap = new HashMap<ObligationSet, State>();          StateSet.StateCallback callback = new StateSet.StateCallback() { public void apply(State state) throws NonexistentObligationException {  State matchingState = fact.getStateWithObligationSet(state.getObligationSet()); if (matchingState != null) {  if (state.getPath().getLength() > matchingState.getPath().getLength()) { state.getPath().copyFrom(matchingState.getPath()); } } } };  try { result.applyToAllStatesAndUpdateMap(callback, updatedStateMap); } catch (NonexistentObligationException e) {   throw new DataflowAnalysisException("This shouldn't happen", e); } }  if (result.isValid()) {  }
	public void meetInto(StateSet fact, Edge edge, StateSet result) throws DataflowAnalysisException {		// TODO: implement				// Various things need to happen here		// - Match up states with equal ObligationSets		// - Paths with multiple occurences of a program point,		//   but different obligation sets on different passes		//   (i.e., obligation created inside a loop but not deleted)		//   (how do we detect this?)	}