Buggy code:
public class GameMap extends Observable { private Locations < Entity > entities ; private Locations < Item > items ; private Locations < Trap > traps ; private Locations < AreaEffect > effects ; private Locations < MapSwitcher > switchers ; private ArrayList < Projectile > projectiles ; private Tile [ ] [ ] tiles ; private MotionValidator MV ; private MotionCoordinator MC ; private int mapID ; public GameMap ( ) { } public GameMap ( int mapID ) { } public GameMap ( Tile [ ] [ ] tiles ) { } public final boolean addEntity ( Entity e , CoordinatePair CP ) { } public void setID ( int mapID ) { } public int getID ( ) { } public final boolean removeEntity ( Entity e ) { } public Entity removeEntity ( CoordinatePair CP ) { } public final boolean addItem ( Item item , CoordinatePair CP ) { } public final boolean removeItem ( Item i ) { } public Item removeItem ( CoordinatePair CP ) { } public final boolean addAreaEffect ( AreaEffect effect , CoordinatePair CP ) { } public final boolean removeAreaEffect ( AreaEffect effect ) { } public AreaEffect removeAreaEffect ( CoordinatePair CP ) { } public final boolean addMapSwitcher ( MapSwitcher switcher , CoordinatePair CP ) { } public final boolean removeMapSwitcher ( MapSwitcher switcher ) { } public MapSwitcher removeMapSwitcher ( CoordinatePair CP ) { } public final boolean addTrap ( Trap trap , CoordinatePair CP ) { } public final boolean removeTrap ( Trap t ) { } public Trap removeTrap ( CoordinatePair CP ) { } private boolean CoordPairIsValid ( CoordinatePair CP ) { } public Entity getEntityAtCoordinate ( CoordinatePair location ) { } public Tile getTileAtCoordinate ( CoordinatePair location ) { } public Item getItemAtCoordinate ( CoordinatePair location ) { } public AreaEffect getAreaEffectAtCoordinate ( CoordinatePair location ) { } public MapSwitcher getSwitcherAtCoordinate ( CoordinatePair location ) { } public Trap getTrapAtCoordinate ( CoordinatePair location ) { } public int getWidth ( ) { } public int getHeight ( ) { } private void updateView ( ) { } @ Override public void addObserver ( Observer o ) { } public boolean requestMovement ( Entity e , Direction dir ) { CoordinatePair desiredLocation ; desiredLocation = GameMap . locationPlusDirection ( e . getLocation ( ) , dir ) ; <START_BUG> if ( MV . canTraverse ( e . getMotionType ( ) , getItemAtCoordinate ( desiredLocation ) , getTileAtCoordinate ( desiredLocation ) . getMotionType ( ) ) ) { <END_BUG> MC . moveEntity ( e , desiredLocation , getAreaEffectAtCoordinate ( desiredLocation ) , getItemAtCoordinate ( desiredLocation ) , getSwitcherAtCoordinate ( desiredLocation ) , getTrapAtCoordinate ( desiredLocation ) ) ; return true ; } else { return false ; } } public boolean useAbility ( Entity e , int abilityToUse ) { } public static CoordinatePair locationPlusDirection ( CoordinatePair initialLocation , Direction direction ) { } public void getEverythingInRange ( CoordinatePair center , int radius , List < Tile > containedTiles , List < Projectile > containedProjectiles , List < Entity > containedEntities , List < Trap > containedTraps , List < Item > containedItems , List < AreaEffect > containedAreaEffects ) { } public void addProjectile ( Projectile proj ) { } }

Fix:
if ( MV . canTraverse ( e . getMotionType ( ) , getItemAtCoordinate ( desiredLocation ) , getTileAtCoordinate ( desiredLocation ) ) ) {