docs: function setupGenericListeners( editor, command ) {
  		var selection, bookmarks;
  
  		// Set the command state according to content-specific
  		// command states.
  		command.on( 'refresh', function( evt ) {
  			// If no state comes with event data, disable command.
  			var states = [ TRISTATE_DISABLED ];
  
  			for ( var s in evt.data.states )
  				states.push( evt.data.states[ s ] );
  
  			this.setState( CKEDITOR.tools.search( states, TRISTATE_OFF ) ?
  					TRISTATE_OFF
  				:
  					TRISTATE_DISABLED );
  		}, command, null, 100 );
  
  		// Initialization. Save bookmarks and mark event as not handled
  		// by any plugin (command) yet.
  		command.on( 'exec', function( evt ) {
  			selection = editor.getSelection();
  			bookmarks = selection.createBookmarks( 1 );
  
  			// Mark execution as not handled yet.
  			if ( !evt.data )
  				evt.data = {};
  
  			evt.data.done = false;
  		}, command, null, 0 );
  
  		// Housekeeping. Make sure selectionChange will be called.
  		// Also re-select previously saved bookmarks.
  		command.on( 'exec', function( evt ) {
  			editor.forceNextSelectionCheck();
  			selection.selectBookmarks( bookmarks );
  		}, command, null, 100 );
  	}