return new P3<Integer, Boolean, Boolean>() {public void e(final Integer fromPos, Boolean forward, Boolean regex) {
			matcher[0]= null;
			
			if (fromPos == -1 && !forward) {
				return;
			}
			String allStr = tp.getText().replaceAll("\r?\n", "\n");
//			
			String findStr = findStrF.e();
			
			
			if (regex) {
				try {
					if (forward) {
						Matcher matcher2 = Pattern.compile(findStr).matcher(allStr);
						if (matcher2.find(fromPos)) {
							matcher[0] = matcher2;
						}
					} else {
						matcher[0] = RegexUtil.lastFound(Pattern.compile(findStr), fromPos, allStr);
					}
					
					if (matcher[0] != null) {
						tp.setSelectionStart(matcher[0].start());
						tp.setSelectionEnd(matcher[0].end());
					}
				} catch (PatternSyntaxException e) {
					// Normal
//					System.out.println("?");
				}
				
				
			} else {
				int found = forward ? allStr.indexOf(findStr, fromPos) :
					allStr.lastIndexOf(findStr, fromPos)
					;
				if (found > -1) {
					tp.setSelectionStart(found);
					tp.setSelectionEnd(found + findStr.length());
				}
			}
		}}