public void redo() {
        if (operation.equals("cross") && parent1 != null && parent2 != null) {
            Fractal newFractal = parent1.cross(parent2);

            x = newFractal.getX();
            y = newFractal.getY();
            z = newFractal.getZ();
            r = newFractal.getR();
            g = newFractal.getG();
            b = newFractal.getB();
        }
        else if (operation.equals("mutate")) {
            inPlaceMutate();
        }
        else if (operation.equals("introduce") && parent1 != null) {
            Fractal newFractal = parent1.introduce();

            x = newFractal.getX();
            y = newFractal.getY();
            z = newFractal.getZ();
            r = newFractal.getR();
            g = newFractal.getG();
            b = newFractal.getB();
        }
        else {
            x = Equation.generateRandomXEquation();
            y = Equation.generateRandomYEquation();
            z = Equation.generateRandomZEquation();
            r = new Equation("x");
            g = new Equation("y");
            b = new Equation("z");
        }
    }