@SuppressWarnings("unchecked")
	@Override
	public void match(Matrix<TokenNode> matrix, Sentence sentence)
			throws IOException {
		StringBuilder buffer = new StringBuilder();
		int j;
		String image;
		@SuppressWarnings("rawtypes")
		HashMap<Integer, HashMap> head;
		out: for (int i = 1; i < sentence.size() - 2; i++) {
			buffer.setLength(0);
			image = sentence.get(i).image;
			head = trie.get(escape(image.charAt(0)));
			if (head == null)
				continue;
			for (int k = 1; k < image.length(); k++) {
				head = head.get(escape(image.charAt(k)));
				if (head == null)
					continue out;
			}
			buffer.append(image);
			j = i + 1;
			while (buffer.length() <= max_len && j < sentence.size() - 1) {
				image = sentence.get(j).image;
				for (int k = 0; k < image.length(); k++) {
					head = head.get(escape(image.charAt(k)));
					if (head == null)
						continue out;
				}
				buffer.append(image);
				if (head.containsKey(EndFlag)) {
					matrix.insert(
							new TokenNode(i, j + 1, new Cell(buffer.toString(),
									CHTag.CH_WORD, sentence.get(i).offset,
									false)), false);
				}
				j++;
			}
		}
	}