void search(ImageProcessor ip, List<Point> list) {

		for (int x = 10; x < 1990; x++) {
			for (int y = 10; y < 1990; y++) {
				int pix = ip.getPixel(x, y);
					
				try {
					//Check if its green
					if (isGreen(pix)) {
						//Check for patterns
						
						if (isGreen(ip.get(x + 1, y)) &&				//XXX
							isGreen(ip.get(x + 2, y)) &&				// X
							isGreen(ip.get(x + 1, y + 1)) &&
							!isGreen(ip.get(x, y + 1)) &&
							!isGreen(ip.get(x + 2, y + 1)) &&
							!isGreen(ip.get(x + 1, y - 1)) &&
							!isGreen(ip.get(x - 1, y)) &&
							!isGreen(ip.get(x + 3, y)) &&
							!isGreen(ip.get(x + 1, y + 2)) &&
							!isGreen(ip.get(x, y - 1)) &&
							!isGreen(ip.get(x + 2, y - 1))) {
							
							checkPoint(x + 1, y, list);
						}						
						
						else if ((	isGreen(ip.get(x, y + 1)) &&		//X
									isGreen(ip.get(x + 1, y + 1)) &&	//XX
									isGreen(ip.get(x, y + 2)) &&		//X
									!isGreen(ip.get(x + 1, y)) &&
									!isGreen(ip.get(x + 1, y + 2)) &&
									!isGreen(ip.get(x - 1, y + 1)) &&
									!isGreen(ip.get(x, y - 1)) &&
									!isGreen(ip.get(x, y + 3)) &&
									!isGreen(ip.get(x + 2, y + 1)) &&
									!isGreen(ip.get(x - 1, y)) &&
									!isGreen(ip.get(x - 1, y + 2))) ||
									
								(	isGreen(ip.get(x - 1, y + 1)) &&	// X
									isGreen(ip.get(x, y + 1)) &&		//XX
									isGreen(ip.get(x, y + 2)) &&		// X
									!isGreen(ip.get(x - 1, y)) &&
									!isGreen(ip.get(x, y + 2)) &&
									!isGreen(ip.get(x + 1, y + 1)) &&
									!isGreen(ip.get(x, y - 1)) &&
									!isGreen(ip.get(x, y + 3)) &&
									!isGreen(ip.get(x - 2, y + 1)) &&
									!isGreen(ip.get(x + 1, y)) &&
									!isGreen(ip.get(x + 1, y + 2))) ||
									
								(	isGreen(ip.get(x - 1, y + 1)) &&	// X
									isGreen(ip.get(x, y + 1)) &&		//XXX
									isGreen(ip.get(x + 1, y + 1)) &&
									!isGreen(ip.get(x - 1, y)) &&
									!isGreen(ip.get(x + 1, y)) &&
									!isGreen(ip.get(x, y + 2)) &&
									!isGreen(ip.get(x - 2, y + 1)) &&
									!isGreen(ip.get(x + 2, y + 1)) &&
									!isGreen(ip.get(x, y - 1)) &&
									!isGreen(ip.get(x, y + 2)) &&
									!isGreen(ip.get(x + 2, y + 2)))) {
								
							
							checkPoint(x, y + 1, list);
							
						}
					}
					
				//This shouldnt happen because I skip the 10 border pixels around the entire map
				} catch (IndexOutOfBoundsException e) {
					continue;
				}
			}
		}
	}