protected static <E extends Comparable<E>> Node<E> fixUp (Node<E> n) {
		assert n != null : "n != null";
		
		if (n.isLeaf) {
			return n;
		}
		
		if (n.left.color == BLACK && n.right.color == RED) {
			n = rotateLeft(n);
		}
		else { 
			if (n.left.color == RED && n.left.left.color == RED) {
				assert n.right.color == BLACK : "n.right.color == BLACK";
				
				n = rotateRight(n);
			}
		
			if (n.left.color == RED && n.right.color == RED) {
				flipTripleColor(n);
			}
		}
		return n;
	}