FreerailsTile oldTile = w.getTile(p.x, p.y);
    public void buildStation(Point p) {        FreerailsTile oldTile = w.getTile(p.x, p.y);        //Only build a station if there is track at the specified point.        if (canBuiltStationHere(p)) {	    System.err.println("Can build station");            String cityName;            String stationName;	    BuildingTile bTile = oldTile.getBuildingTile();	    BuildingType bType = null;	    if (bTile != null) {		bType = (BuildingType) w.get(KEY.BUILDING_TYPES,			bTile.getType(), Player.AUTHORITATIVE);	    }	    if (bTile == null || bType.getCategory() !=		    BuildingType.CATEGORY_STATION) {		System.err.println("Adding new station");		//There isn't already a station here, we need to pick a name		//and add an entry to the station list.		CalcNearestCity cNC = new CalcNearestCity(w, p.x, p.y);		cityName = cNC.findNearestCity();		VerifyStationName vSN = new VerifyStationName(w, cityName);		stationName = vSN.getName();		if (stationName == null) {		    //there are no cities, this should never happen		    stationName = "Central Station";		}		//check the terrain to see if we can build a station on it...		Move m = AddStationMove.generateMove(w, stationName, p,			stationOwner, ruleNumber);		moveReceiver.processMove(m);		System.err.println("move done");	    } else {		//Upgrade an existing station.		ChangeBuildingMove cbm = new ChangeBuildingMove(p, bTile,			new BuildingTile(ruleNumber), stationOwner);		this.moveReceiver.processMove(cbm);            }        } else {            System.err.println(                "Can't build station here");        }    }