protected boolean approachingTurn(Segment s) {
        
        Segment overlappingSegment = findOverlappingSegment(s);
        if (desire == Desire.STRAIGHT) {
            return false;
        }
        if (desire == Desire.TURN_LEFT && !vehicle.getLane().canTurnLeft()) {
            return false;
        }
        if (desire == Desire.TURN_RIGHT && !vehicle.getLane().canTurnRight()) {
            return false;
        }
        if (overlappingSegment != null) {
            int distanceFromTurn = (overlappingSegment.id() - s.id());
            if (distanceFromTurn < (CORNER_STOP_DISTANCE + CORNER_STOP_TIME_DISTANCE)) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }