/** Replaces the value of the given entry. */ public Object replaceValue(Entry e, Object value) { checkEntry(e); Object oldValue = ((LocationAwareEntry) e).setValue(value); return oldValue; } /** Determines whether a given entry is valid. */ protected void checkEntry(Entry ent) throws InvalidEntryException { if(ent == null || !(ent instanceof LocationAwareEntry)) throw new InvalidEntryException("invalid entry"); } /** Inner class for a location-aware entry. */ protected static class LocationAwareEntry extends MyEntry implements Entry { /** Position where the entry is stored. */ private Position loc; public LocationAwareEntry(Object key, Object value) { super(key, value); } public LocationAwareEntry(Object key, Object value, Position pos) { super(key, value); loc = pos; } protected Position location() { return loc; } protected Position setLocation(Position pos) { Position oldPosition = location(); loc = pos; return oldPosition; } protected Object setKey(Object key) { Object oldKey = key(); k = key; return oldKey; } protected Object setValue(Object value) { Object oldValue = value(); v = value; return oldValue; } }