void mark(WorldPoint loc, Book book)
	{
		Bookcase bookcase = byPoint.get(loc);
		if (bookcase == null)
		{
			log.debug("Requested non-existent bookcase at {}", loc);
			return;
		}

		mark(bookcase, book);
	}
@Test
	public void testVarlamoreEnvoyFindingProcess()
	{
		assertEquals(SolvedState.NO_DATA, library.getState());
		library.mark(0, Book.RADAS_JOURNEY);
		assertEquals(SolvedState.INCOMPLETE, library.getState());
		library.mark(library.step, Book.KILLING_OF_A_KING);
		assertEquals(SolvedState.COMPLETE, library.getState());

		// The Varlamore Envoy book can be found in this bookcase, but should not cause a state reset if not found
		library.mark(library.step * 2, null);
		assertEquals(SolvedState.COMPLETE, library.getState());
		library.mark(library.step * 2, Book.VARLAMORE_ENVOY);
		assertEquals(SolvedState.COMPLETE, library.getState());

		// not valid, should reset
		library.mark(library.step * 2, Book.TRANSPORTATION_INCANTATIONS);
		assertEquals(SolvedState.INCOMPLETE, library.getState());
	}