whole_func_string: function(node) {
        var range = this.getRange();
        if (!range) {
          return;
        }
  
        try {
          // This only works when the range boundaries are not overlapping other elements
          range.surroundContents(node);
          this.selectNode(node);
        } catch(e) {
          // fallback
          node.appendChild(range.extractContents());
          range.insertNode(node);
        }
      }
func_code_string: function(node) {
        var range = this.getRange();
        if (!range) {
          return;
        }
  
        try {
          // This only works when the range boundaries are not overlapping other elements
          range.surroundContents(node);
          this.selectNode(node);
        } catch(e) {
          // fallback
          node.appendChild(range.extractContents());
          range.insertNode(node);
        }
      }
func_documentation_string: Wraps current selection with the given node
  
  @param {Object} node The node to surround the selected elements with