private static ArrayList<Integer> getPredictor(int windowLen, int[] finalCluster, int VERBOSE) {
		int logFlag = Constants.LOG_PREDICTOR;
		// get the last W
		int[] keySequence = new int[windowLen];
		for (int i=finalCluster.length-windowLen; i<finalCluster.length; i++) {
			keySequence[i-finalCluster.length+windowLen] = finalCluster[i];
		}
		Util.logPrintln(VERBOSE, logFlag, "keySeq: "+Util.arrayToStr(keySequence));
		
		// search for predictor
		// the result is the index in the training set
		ArrayList<Integer> result = new ArrayList<Integer>();
		for (int i=0; i<finalCluster.length-windowLen; i++) {
			// move forward W element from i if we can get the same sequence as keySequence
			int[] newSeq = new int[windowLen]; 
			for (int j=0; j<windowLen; j++ ){
				newSeq[j] = finalCluster[i+j];
			}
			boolean equal = Util.isEqual(keySequence, newSeq);
			Util.logPrintln(VERBOSE, logFlag, "newSeq: " + Util.arrayToStr(newSeq)+": "+equal);
			if ( equal==true )	result.add(i+windowLen);
		}
		return result;
	}