private void ssFixdown (int Td, int PA, int sa, int i, int size) {

		final int[] SA = this.SA;
		final byte[] T = this.T;

		int j, k;
		int v;
		int c, d, e;

		for (v = SA[sa + i], c = (T[Td + SA[PA + v]]) & 0xff; (j = 2 * i + 1) < size; SA[sa + i] = SA[sa + k], i = k) {
			d = T[Td + SA[PA + SA[sa + (k = j++)]]] & 0xff;
			if (d < (e = T[Td + SA[PA + SA[sa + j]]] & 0xff)) {
				k = j;
				d = e;
			}
			if (d <= c) break;
		}
		SA[sa + i] = v;

	}