public void notifyObserver(Object notificationData) {
        if (notificationData instanceof ProcessorNotificationData) {
            Object data = ((ProcessorNotificationData) notificationData).getData();
            if (data instanceof IBitPattern) {
                String instBits = ((IBitPattern) data).toBinaryString().substring(8);
                String instAddress = ((IBitPattern) data).toBinaryString().substring(0, 8);

                jByteContainerPanel2.setAddress("0x"+BitPatternUtils.toHexString(Integer.parseInt(instAddress, 2), 2).toUpperCase());
                jByteContainerPanel2.setValue("0x"+BitPatternUtils.toHexString(Integer.parseInt(instBits, 2), 4).toUpperCase());

                String inst = ProcessorUtils.instructionToString(instBits);
                jLabel7.setText("<html>" + inst + "</html>");
                jTextArea2.append(inst + "\n");
                jTextArea2.setCaretPosition(jTextArea2.getDocument().getLength());

                if (machine.getStepByStep()) {
                    executeStepByStepAction.setEnabled(true);
                }
            } else if (data instanceof String) {
                if (((String) data).equals("halt")) {
                    enableOrDisableControls(false);
                }
            } else if (data instanceof MalformedProcessorInstructionException) {
                enableOrDisableControls(false);
            } else if (data instanceof BitPatternOverflowException) {
                enableOrDisableControls(false);
                showError("BMach - Error", "Overflow:", ((BitPatternOverflowException) data).getMessage());
            }
        }
    }