public boolean insert(T[] values) {
		synchronized(lock) {
			if(values==null || values.length==0) {
				System.out.println("Insert item is empty...");
				return false;
			}
			
			TrieNode<T> currNode = root;
			for(int i=0;i<values.length;i++) {
				T current = values[i];
				if(current == null) {
					System.out.println("Insert item contains null value...");
					return false;
				}
				
				currNode = currNode.insertChild(current);
				if(i == values.length-1) {
					if (!currNode.isEndMarker()) {
						currNode.setEndMarker(true);
						entryNum++;
					} else {
						System.out.println("Insert item already exists...");
						return false;
					}
				}
			}
			return true;
		}
	}