private void parseLine(final String line) 
        throws IllegalInstructionException {
        final String[] lineParts = line.split("[\\s]");
        if (lineParts.length > 0) {
            try {
                this.commandWord = 
                    CommandWord.valueOf(lineParts[0].toUpperCase());
            } catch (IllegalArgumentException e) {
                throw new IllegalInstructionException
                    ("Unrecognized command: " + lineParts[0], e);
            }
        }

        if (this.commandWord == null) {
            throw new IllegalInstructionException
                ("Unrecognized command: " + line);
        }

        if (lineParts.length > this.commandWord.getNumberOfParameters()) {
            this.commandParameter = 
                new Integer[this.commandWord.getNumberOfParameters()];
            try {
                for (int i = 0; i < this.commandWord.getNumberOfParameters(); 
                     i++) {
                    this.commandParameter[i] = 
                        Integer.parseInt(lineParts[i + 1]);
                }
            } catch (NumberFormatException e) {
                throw new IllegalInstructionException
                    ("Parameter not a number. Command line: " + line, e);
            }

        } else if (this.commandWord != null && this.
                   commandWord.getNumberOfParameters() > 0) {
            throw new IllegalInstructionException
                ("Mandatory parameter not given. Line " + line);
        }
    }