@Override
    public Text getText() {
        if (_hasChanged) {
            _textValue = new Text();

            int keyLength;
            for (Map.Entry<NameObject, DirectObject> anEntry : _map.entrySet()) {
                keyLength = anEntry.getKey().getText().getLineAt(0).length();

                _textValue.append(
                        String.format("%s %s",
                                      anEntry.getKey().getText(),
                                      anEntry.getValue().getText().getLineAt(0)));
                
                anEntry.getValue().getText().indentTailLinesBy(keyLength + 1);

                for (int i = 1; i < anEntry.getValue().getText().lineCount(); i++) {
                    _textValue.append(
                            anEntry.getValue().getText().getLineAt(i));
                }
            }

            _textValue.indentTailLinesBy(3);
            _textValue.getLineAt(0).insert(0, "<< ");
            _textValue.getLineAt(_textValue.lineCount() - 1).append(" >>");

            _hasChanged = false;
        }

        return _textValue;
    }