public WorkLocation getCorrespondingWorkLocation(WorkLocation wl) {
        Colony original = wl.getColony();
        // Insist that this is a scratch colony, and the work location
        // is in the original or vice versa.
        if (getName().equals("scratch" + original.getName())
            || original.getName().equals("scratch" + getName())) {
            if (wl instanceof Building) {
                // Types are unique for buildings, so use that as a key
                BuildingType type = ((Building)wl).getType();
                for (Building b : getBuildings()) {
                    if (b.getType() == type) return b;
                }
            } else if (wl instanceof ColonyTile) {
                // ColonyTiles are harder because the underlying tile is
                // also a scratch-version, but the scratch and original
                // tile share item containers.
                Tile workTile = ((ColonyTile)wl).getWorkTile();
                for (ColonyTile c : getColonyTiles()) {
                    if (c.getWorkTile().getTileItemContainer()
                        == workTile.getTileItemContainer()) return c;
                }
            }
        }
        return null;
    }