+ @Override
+ protected Object getHighLevelState(Object state, String stateID)
+ {
+ switch (stateID)
+ {
+ case "q":
+ return getAsBitVector(((BitAndInt) state).i);
+ default:
+ return super.getHighLevelState(state, stateID);
+ }
+ }
+
+ @Override
+ protected Object setHighLevelState(Object lastState, String stateID, Object newHighLevelState)
+ {
+ switch (stateID)
+ {
+ case "q":
+ int i;
+ BitVector newHighLevelStateCasted = (BitVector) newHighLevelState;
+ if (newHighLevelStateCasted.length() != 3)
+ throw new IllegalArgumentException("Expected BitVector of length 3, not " + newHighLevelStateCasted.length());
+ if (newHighLevelStateCasted.isBinary())
+ i = newHighLevelStateCasted.getUnsignedValue().intValue();
+ else
+ i = -1;// this makes setting to U impossible
+ if (i > 5)
+ throw new IllegalArgumentException("Given value not in range (0-5 incl.): " + i);
+ ((BitAndInt) lastState).i = i;
+ return lastState;
+ default:
+ return super.setHighLevelState(lastState, stateID, newHighLevelState);
+ }
+ }
+