void redBlackFixUpInsert(RedBlackNode node) {
		while (node.getParent().getColor() == NodeColor.Red) {
			if (node.getParent().equals(node.getParent().getParent().getLeft())) {
				RedBlackNode y = node.getParent().getParent().getRight();
				if (y.getColor() == NodeColor.Red) {
					node.getParent().setColor(NodeColor.Black);
					y.setColor(NodeColor.Black);
					node.getParent().getParent().setColor(NodeColor.Red);
					node = node.getParent().getParent();
				} else {
					if (node.equals(node.getParent().getRight())) {
						node = node.getParent();
						leftRotate(node);
					}
					node.getParent().setColor(NodeColor.Black);
					node.getParent().getParent().setColor(NodeColor.Red);
					rightRotate(node.getParent().getParent());
				}
			} else {
				RedBlackNode y = node.getParent().getParent().getLeft();
				if (y.getColor() == NodeColor.Red) {
					node.getParent().setColor(NodeColor.Black);
					y.setColor(NodeColor.Black);
					node.getParent().getParent().setColor(NodeColor.Red);
					node = node.getParent().getParent();
				} else {
					if (node.equals(node.getParent().getLeft())) {
						node = node.getParent();
						rightRotate(node);
					}
					node.getParent().setColor(NodeColor.Black);
					node.getParent().getParent().setColor(NodeColor.Red);
					leftRotate(node.getParent().getParent());
				}
			}
		}

		this.root.setColor(NodeColor.Black);
	}