if (schedule.stopsAtStation(stationKey)) {
if (stopsAtStation(schedule, stationKey)) {
    static RemoveStationMove getInstance(ReadOnlyWorld w,        ChangeTrackPieceMove removeTrackMove, FreerailsPrincipal p) {        WorldIterator wi = new NonNullElements(KEY.STATIONS, w, p);        int stationIndex = -1;        while (wi.next()) {            StationModel station = (StationModel)wi.getElement();            if (station.x == removeTrackMove.getLocation().x &&                    station.y == removeTrackMove.getLocation().y) {                //We have found the station!                stationIndex = wi.getIndex();                break;            }        }        if (-1 == stationIndex) {            throw new IllegalArgumentException("Could find a station at " +                removeTrackMove.getLocation().x + ", " +                removeTrackMove.getLocation().y);        }        StationModel station2remove = (StationModel)w.get(KEY.STATIONS,                stationIndex, p);        ArrayList moves = new ArrayList();        moves.add(removeTrackMove);        moves.add(new RemoveItemFromListMove(KEY.STATIONS, stationIndex,                station2remove, p));        //Now update any train schedules that include this station.        WorldIterator schedules = new NonNullElements(KEY.TRAIN_SCHEDULES, w);        while (schedules.next()) {            ImmutableSchedule schedule = (ImmutableSchedule)schedules.getElement();	    ObjectKey stationKey = new ObjectKey(KEY.STATIONS, p,		    stationIndex);            if (schedule.stopsAtStation(stationKey)) {                MutableSchedule mutableSchedule = new MutableSchedule(schedule);                mutableSchedule.removeAllStopsAtStation(stationKey);                Move changeScheduleMove = new ChangeTrainScheduleMove(schedules.getIndex(),                        schedule, mutableSchedule.toImmutableSchedule());                moves.add(changeScheduleMove);            }        }        return new RemoveStationMove(moves);    }