       "<UNDEFINED PATTERN>"
     nullable: =>
       false
+    require: =>
+      return this
     contains: (nodeName) =>
       throw new RNGException("Cannot call 'contains(#{nodeName})' on pattern '#{@toString()}'")
     dereference: =>

        throw new Error("ack node missing")
      _nodelog node, "checking #{this} against", node, [this, node]
      res = @_check(node, descend)
      _nodelog node, "result for #{this} againt", node, "is #{res}", [this, node, res]
      return res

    _check: (node, descend) =>

      "#{@pattern}+"
    nullable: =>
      @pattern.nullable()
    require: =>
      return new MissingContent("missing #{this}", this)
    _check: (node, descend) =>
      p1 = @pattern.check(node, descend)
      if p1 instanceof NotAllowed
        return p1
      return new Choice(new Empty("oneOrMore satisfied"), this)
    attrCheck: (node) =>
      p1 = @pattern.attrCheck(node)
      return (new Choice(new Empty("oneOrMore satisfied"), this))

  class List extends Pattern
    constructor: (pattern) ->
