anchor.diff:  
     Shell shell = new Shell();
     shell.startup();
  +
  +  shell.registerComponentObject(tools);
   }
   
   class Tools {
     void startup({String fullScreenButtonSelector: "#full_screen", String consoleSelector: "#console"}) {
       querySelector(fullScreenButtonSelector).onClick.listen((event) => querySelector(consoleSelector).requestFullscreen());
  +  }
  +
  +  String help() {
  +    return "-- help: Print documents";
     }
   }
   
  
positive.code:   }
  
    bool registerComponentObject(object) {
  
    }
  
    void keyListener(KeyboardEvent event) {
      if (event.keyCode == KeyCode.ENTER) {
        logger.fine("Start execute command: ${(event.target as InputElement).value}");
        // Execute command
        var response = new DivElement();
        var input = event.target as InputElement;
        response.innerHtml = input.value;
        input.readOnly = true;
        input.autofocus = false;
        input.parent.children.add(response);
        var session = createSession();
        input.parent.parent.children.add(session.session);
        session.input.focus();
      }
    }
  
    Session createSession() {
      var inter = new DivElement();
      var flag = new SpanElement();
      flag.innerHtml = "\$";
  
negative.code: class Shell {
    final Logger logger = new Logger("Shell");
    DivElement _console;
    Map<String, InstanceMirror> instanceCommands = new Map<String, InstanceMirror>();
  
    Shell({String consoleSelector: "#console"}) {
      _console = querySelector(consoleSelector);
  