code: function() {
  			var node = new AbbreviationNode();
  			var attrs = ['abbreviation', 'counter', '_name', '_text', 'repeatCount', 'hasImplicitRepeat', 'start', 'end', 'content', 'padding'];
  			attrs.forEach(function(a) {
  				node[a] = this[a];
  			}, this);
  			
  			// clone attributes
  			node._attributes = this._attributes.map(function(attr) {
  				return utils.extend({}, attr);
  			});
  			
  			node._data = utils.extend({}, this._data);
  			
  			// clone children
  			node.children = this.children.map(function(child) {
  				child = child.clone();
  				child.parent = node;
  				return child;
  			});
  			
  			return node;
  		}
docs: Creates a deep copy of current node
  @returns {AbbreviationNode}