protected JPanel initDecompPanel()
    {
        JPanel n = new JPanel(new BorderLayout());
        
        JPanel o = new JPanel();
        o.setLayout(new BoxLayout(o, BoxLayout.X_AXIS));
        
        sliderPanel = new JPanel();
        sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.Y_AXIS));
        
        addDecompPanelGameFeatures(n);
        
        myXPanel = new SliderPanel("x", this);
        sliderPanel.add(myXPanel);
        
        myYPanel = new SliderPanel("y", this);
        sliderPanel.add(myYPanel);
        
        JPanel m = new JPanel();    // I'm really running out of letters here
        m.setLayout(new BoxLayout(m, BoxLayout.X_AXIS));
        m.setBorder(BorderFactory.createEmptyBorder(0, 8, 8, 7));
        m.add(new JLabel("z: "));
        myZDisplay = new JTextArea(1, 30);
        myZDisplay.setEditable(false);
        m.add(myZDisplay);
        m.add(new JLabel("    |z|: "));
        myZLength = new JTextArea(1, 5);
        myZLength.setEditable(false);
        m.add(myZLength);
        sliderPanel.add(m);        
        
        myXYZPanel = new JPanel(new BorderLayout());
        myXYZDisplay = new JTable(1, 1);
        myXYZDisplay.setEnabled(false);
        myXYZPanel.add(myXYZDisplay);
        myXYZPanel.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 7));       
        sliderPanel.add(myXYZPanel, BorderLayout.SOUTH);
        
        JPanel p = new JPanel(new BorderLayout());
        p.add(stageMessages[3], BorderLayout.WEST);
        sliderPanel.add(p);
        o.add(sliderPanel);
        
        JPanel q = new JPanel();
        q.setLayout(new BoxLayout(q, BoxLayout.Y_AXIS));
        myDecompButton = new JButton(decompButtonTitle);
        myDecompButton.setEnabled(false);
        myDecompButton.addActionListener(new ActionListener()
            {
                public void actionPerformed (ActionEvent ev)
                {	                                        
                	stages[4].setVisible(true);
                	stages[5].setVisible(true);
                	resetMessages();                	
                    setI();
                    displayIEnd();
                    if (myLemma.isInLang(myLemma.createPumpedString()))
                    	myLemma.addAttempt(myLemma.getDecompositionAsString()+"; I = "+myLemma.getI() + "; <i>Won</i>");
                    else
                    	myLemma.addAttempt(myLemma.getDecompositionAsString()+"; I = "+myLemma.getI() + "; <i>Failed</i>");
                    updateTopPane(false);
                    leftPanel.revalidate();
                    setCanvas();
                    myCanvas.stop();                    
                    /*
                     * If there is only one case and myCases will not 
                     * have been initialized.
                     */
                    if(myCases != null)
                        myCases.setAddReplaceButtonsEnabled(true);
                }
            });
        q.add(myDecompButton);
        o.add(q);
        n.add(o, BorderLayout.NORTH);               
        return n;
    }