private Vector<TrieNode> fetch(TrieNode parent) {

		int prev = 0;
		Vector<TrieNode> siblings = new Vector<TrieNode>();

		for (int i = parent.left; i < parent.right; i++) {

			if (this.keys[i].length() < parent.depth) {
				continue;
			}

			String tmp = this.keys[i];

			int cur = 0;
			if (this.keys[i].length() != parent.depth) {
				cur = tmp.charAt(parent.depth) + 1;
			}

			if (prev > cur) {
				throw new RuntimeException("Fatal: Keys are not sorted");
			}

			if (cur != prev || siblings.size() == 0) {
				TrieNode tempNode = new TrieNode(cur, parent.depth + 1, i, 0);
				if (siblings.size() != 0) {
					TrieNode lastSibling = siblings.lastElement();
					lastSibling.right = i;
				}

				siblings.add(tempNode);
			}

			prev = cur;

		}

		if (siblings.size() != 0) {
			TrieNode lastSibling = siblings.lastElement();
			lastSibling.right = parent.right;
		}

		return siblings;

	}