public void insert(Comparable item) {
		current = parent = grand = header;
		nullNode.element = item;

		while (current.element.compareTo(item) != 0) {
			great = grand;
			grand = parent;
			parent = current;
			current = item.compareTo(current.element) < 0 ? current.left
					: current.right;

			// Check if two red children; fix if so
			if (current.left.color == RED && current.right.color == RED)
				handleReorient(item);
		}

		// Insertion fails if already present
		if (current != nullNode)
			return;
		current = new RedBlackNode(item, nullNode, nullNode);

		// Attach to parent
		if (item.compareTo(parent.element) < 0)
			parent.left = current;
		else
			parent.right = current;
		handleReorient(item);
	}