@Override
	public String toString(){
		if(start<0) return "ROOT";
		StringBuilder sb = new StringBuilder("<");
		for(Integer i: stringIndex){
			sb.append(i+",");
		}
		sb = sb.deleteCharAt(sb.length()-1);
		//sb.append(">("+position+")"+"["+cut+","+end+"]:"+"{"+start+","+end+"}");
		if(cut<start){
			throw new IllegalStateException("Cut is larger than start! cut:"+cut+" start:"+start);
		}
		sb.append(">("+position+")"+"["+stringRepr.substring(cut-start)+"]:"+"{"+stringRepr+"}");
		/*show suffix link
		if(suffixLink!=null && suffixLink!=this)
			sb.append("->"+suffixLink.toString());*/
		return sb.toString();
	}