public boolean find() {
			for (; offset < bytes.length; offset++) {
				localRabin.pushByte(bytes[offset]);
				if (localRabin.getFingerprintLong() == targetFingerprint) {
					final int i0 = offset - target.length() + 1;
					final int i1 = offset + 1;
					if (i0 < 0 || i1 >= string.length()) continue;
					final String substring = string.substring(i0, i1);
					if (substring.equals(target)) {
						start = i0;
						end = i1;
						return true;
					}
				}
			}
			return false;
		}