code: @Override
  	public void setCurrent(T stateful, State<T> current, State<T> next) throws StaleStateException {
  		try {
  
  			// Has this Entity been persisted to Mongo?
  			//
  			StateDocumentImpl stateDoc = this.getStateDocument(stateful);
  			if (stateDoc != null && stateDoc.isPersisted()) {
  
  				// Update state in the DB
  				//
  				updateStateInDB(stateful, current, next, stateDoc);
  			} else {
  
  				// The Entity hasn't been persisted to Mongo - so it exists only
  				// this Application memory.  So, serialize the qualified update to prevent
  				// concurrency conflicts
  				//
  				updateInMemory(stateful, stateDoc, current.getName(), next.getName());
  			}
  		} catch (NoSuchFieldException e) {
  			throw new RuntimeException(e);
  		} catch (SecurityException e) {
  			throw new RuntimeException(e);
  		} catch (IllegalArgumentException e) {
  			throw new RuntimeException(e);
  		} catch (IllegalAccessException e) {
  			throw new RuntimeException(e);
  		}
  	}
docs: Set the current State.  This method will ensure that the state in the db matches the expected current state.
  If not, it will throw a StateStateException
  
  @param stateful Stateful Entity
  @param current Expected current State
  @param next The value of the next State
  @throws StaleStateException thrown if the value of the State does not equal to the provided current State