private void rb_insert_fixup(RBNode z) {
        //   makeDotFile();
        //   com.andreydev.rbtree.RBNode y;
        RBNode y = nil;
        while (z.getParrent().getColor() == Color.RED) {
            if (z.getParrent() == z.getParrent().getParrent().getLeft()) {
                y = z.getParrent().getParrent().getRight();
                if (y.getColor() == Color.RED) {
                    z.getParrent().setColor(Color.BLACK);
                    y.setColor(Color.BLACK);
                    z.getParrent().getParrent().setColor(Color.RED);
                } else if (z == z.getParrent().getRight()) {
                    z = z.getParrent();
                    left_rotate(z);
                } else {
                    z.getParrent().setColor(Color.BLACK);
                    z.getParrent().getParrent().setColor(Color.RED);
                    right_rotate(z.getParrent().getParrent());
                }
            } else {
                y = z.getParrent().getParrent().getLeft();
                if (y.getColor() == Color.RED) {
                    z.getParrent().setColor(Color.BLACK);
                    y.setColor(Color.BLACK);
                    z.getParrent().getParrent().setColor(Color.RED);
                    z = z.getParrent().getParrent();
                } else if (z == z.getParrent().getLeft()) {
                    z = z.getParrent();
                    right_rotate(z);
                    z.getParrent().setColor(Color.BLACK);
                    z.getParrent().getParrent().setColor(Color.RED);
                    left_rotate(z.getParrent().getParrent());
                } else {
                    z.getParrent().setColor(Color.BLACK);
                    z.getParrent().getParrent().setColor(Color.RED);
                    left_rotate(z.getParrent().getParrent());
                }

            }
        }
        root.setColor(Color.BLACK);
        //  makeDotFile();
    }