text: function AstNode(ruleType) {
    this.ruleType = ruleType
    this._subItems = {}
  }
  
  AstNode.prototype.add = function(ruleType, obj) {
    var items = this._subItems[ruleType]
    if (items === undefined) this._subItems[ruleType] = items = []
    items.push(obj)
  }
  
  AstNode.prototype.getSingle = function(ruleType) {
    return (this._subItems[ruleType] || [])[0]
  }
  
  AstNode.prototype.getItems = function(ruleType) {
    return this._subItems[ruleType] || []
  }
  
  AstNode.prototype.getToken = function(tokenType) {
    return this.getSingle(tokenType)
  }
  
  AstNode.prototype.getTokens = function(tokenType) {
    return this._subItems[tokenType] || []
  }
  
  module.exports = AstNode
  