/** Attribute and its two values for the visit status of positions. */
protected static Object STATUS = new Object(); // The status attribute
protected static Object VISITED = new Object(); // Visited value
protected static Object UNVISITED = new Object(); // Unvisited value
/** Mark a position as visited. */
protected void visit(Position p) { p.set(STATUS, VISITED); }
/** Mark a position as unvisited. */
protected void unVisit(Position p) { p.set(STATUS, UNVISITED); }
/** Test if a position has been visited. */
protected boolean isVisited(Position p) { return (p.get(STATUS) == VISITED); }