     _check: (node, descend) =>
       return @require(node)
     require: (node) =>
-      return new EmptyNode("#{this}", this)
+      return new Empty("#{this}", this)
     attrCheck: (node) =>
       error = []
       for attr in h.getNodeAttributes(node)

        return @pattern2.check(node, descend)
      if @pattern2 instanceof Empty or @pattern2 instanceof EmptyNode
        return @pattern1.check(node, descend)
      _nodelog node, "p1 group, checking pattern1 #{@pattern1} against", node, [this, @pattern1, node]
      p1 = @pattern1.check(node, descend)
      if p1 instanceof NotAllowed
        return p1
      if p1 instanceof GoodElement
        return @pattern2
      _nodelog node, "p2 group, checking pattern2 #{@pattern2} against", node, [this, @pattern2, node]
      p2 = @pattern2.check(node, descend)
      if p2 instanceof NotAllowed
        # Return nullabled group

      @pattern = getPattern pattern
    toString: =>
      "#{@name} = #{@pattern}"
    require: (node) =>
      return @pattern.require(node)
    _check: (node, descend) =>
      @pattern.check(node, descend)
    attrCheck: (node) =>
