public static Ball probe(Ball ball, int boxSize, int shiftIncrement, Rectangle2D.Double acceptQuadrant){
		Cardinal direction = Cardinal.NORTH;
		Ball probe = new Ball(new Point2D.Double(ball.getCenterPoint().getX(), ball.getCenterPoint().getY()), ball.getVelocity(), ball.getSpeed(), MyColor.BLACK);
		//displace the invalid ball outside the game field so the probe can find a closer valid position
		ball.setCenterX(-Ball.RADIUS);
		ball.setCenterY(-Ball.RADIUS);
		for(int i = 1; i <= boxSize; i++){
			for(int j = 0; j < 2; j++){
				for(int k = 0; k < i; k++){
					switch(direction){
					case WEST:
						probe.move(-shiftIncrement, 0);
						break;
					case NORTH:
						probe.move(0, -shiftIncrement);
						break;
					case EAST:
						probe.move(shiftIncrement, 0);
						break;
					case SOUTH:
						probe.move(0, shiftIncrement);
						break;
					}
				}
				boolean b1 = acceptQuadrant.contains(probe.getCenterPoint().getX(), probe.getCenterPoint().getY()); 
				boolean b2 = probe.isPositionValid();
				if(b1 && b2){
					return probe;
				}
				direction = direction.nextClockwise();
			}
		}
		return null;
	}