int[] propagateNeighborPointIndexes2d(int x, int y, int[][] isoPointIndexes2d) {

		// propagates only the intersection point -- one in the case of a square

		int[] pixelPointIndexes = isoPointIndexes2d[y];

		boolean noXNeighbor = (x == squareCountX - 1);
		// the x neighbor is myself from my last pass through here
		if (noXNeighbor) {
			pixelPointIndexes[0] = -1;
			pixelPointIndexes[1] = -1;
			pixelPointIndexes[2] = -1;
			pixelPointIndexes[3] = -1;
		}
		else {
			pixelPointIndexes[1] = pixelPointIndexes[3];
		}

		// from my y neighbor
		boolean noYNeighbor = (y == squareCountY - 1);
		pixelPointIndexes[2] = (noYNeighbor ? -1 : isoPointIndexes2d[y + 1][0]);

		// these must always be calculated
		pixelPointIndexes[0] = -1;
		pixelPointIndexes[3] = -1;
		return pixelPointIndexes;
	}