public class Rule
{
    public Rule (String number, String[] ruleOneList, String[] ruleTwoList)
    {
        _number = Integer.valueOf(number);
        
        _ruleOne = new int[ruleOneList.length];

        for (int i = 0; i < _ruleOne.length; i++)
            _ruleOne[i] = Integer.valueOf(ruleOneList[i]);

        if (ruleTwoList != null)
        {
            _ruleTwo = new int[ruleTwoList.length];

            for (int j = 0; j < _ruleOne.length; j++)
                _ruleTwo[j] = Integer.valueOf(ruleTwoList[j]);
        }
        else
            _ruleTwo = null;

        _match = ' ';
    }

    public Rule (String number, char match)
    {
        _number = Integer.valueOf(number);

        _ruleOne = _ruleTwo = null;

        _match = match;
    }

    public final int getNumber ()
    {
        return _number;
    }

    @Override
    public String toString ()
    {
        return "Rule < "+_number+", "+_ruleOne+", "+_ruleTwo+", "+_match+" >";
    }

    private int _number;
    private int[] _ruleOne;
    private int[] _ruleTwo;
    private char _match;
}
@@ -892,22 +892,28 @@
         
-return
+String str =
  %22Rule %3C
@@ -931,31 +931,317 @@
 %22, %22
-+_ruleOne+%22, %22+
+;%0A%0A        if (_ruleOne != null)%0A        %7B%0A            for (int i = 0; i %3C _ruleOne.length; i++)%0A                str += _ruleOne%5Bi%5D+%22 %22;%0A%0A            if (_ruleTwo != null)%0A            %7B%0A                str += %22, %22;%0A%0A                for (int i = 0; i %3C _ruleTwo.length; i++)%0A                    str += 
 _ruleTwo
 +%22, 
@@ -1240,25 +1240,130 @@
 eTwo
+%5Bi%5D
 +%22
-,
  %22
-+_match+%22 %3E%22
+;%0A            %7D%0A%0A            str += %22%3E%22;%0A        %7D%0A        else%0A            str += _match+%22 %3E%22;%0A%0A        return str
 ;%0A  

Update Rule.java