@Override
    public void run()
    {
        if(fEnd == null)
        {
            ArrayList<Lane> lanes = new ArrayList<Lane>(fStart.getStreet().getLanes());
            ArrayList<Lane> possibleEndLanes = new ArrayList<Lane>(fStart.getGlobals().getMap().getEndLanes());
            possibleEndLanes.removeAll(lanes);

            if (possibleEndLanes.size() > 0)
            {
                while (possibleEndLanes.size() > 0)
                {
                    int index = (int) (Math.random() * possibleEndLanes.size());
                    fEnd = possibleEndLanes.get(index);
                    if (fEnd != null)
                    {
                        if (!fEnd.isBlocked() && createPath(fStart))
                        {
                            break;
                        } else
                        {
                            fEnd.setIsBlocked(true);
                            possibleEndLanes.remove(index);
                        }
                    }
                }
            }
        }
        else
        {
            createPath(fStart);
        }
        fCar.setPath(this);
    }