public void add(String sentence) {
		sentence = sentence.trim();
		String[] parts = sentence.split("(?!^)\\b");

		if (parts.length >= 4) {
			for (int i = 0; i < parts.length - 3; i++) {
				MdBtQuad mdBtQuad = new MdBtQuad(parts[i], parts[i + 1],
						parts[i + 2], parts[i + 3]);

				mdBtQuad.setCanStart(i == 0);
				mdBtQuad.setCanEnd(i == parts.length - 4);

				if (mdBtQuads.contains(mdBtQuad)) {
					mdBtQuad = mdBtQuads.get(mdBtQuads.indexOf(mdBtQuad));
				} else {
					mdBtQuads.add(mdBtQuad);
				}

				for (int n = 0; n < 4; n++) {
					String token = parts[i + n];
					if (!words.containsKey(token)) {
						words.put(token, new ArrayList<MdBtQuad>(1));
					}

					words.get(token).add(mdBtQuad);
				}

				if (i > 0) {
					String previousToken = parts[i - 1];
					if (!previous.containsKey(mdBtQuad)) {
						previous.put(mdBtQuad, new ArrayList<String>(1));
					}
					previous.get(mdBtQuad).add(previousToken);
				}

				if (i < parts.length - 4) {
					String nextToken = parts[i + 4];
					if (!next.containsKey(mdBtQuad)) {
						next.put(mdBtQuad, new ArrayList<String>(1));
					}
					next.get(mdBtQuad).add(nextToken);
				}

			}
		}
	}