class REXML::Validation::Optional

def expected

def expected
  return [ @prior.expected, @events[0] ].flatten if @current == 0
  return [@events[@current]]
end

def matches?(event)

def matches?(event)
  @events[@current].matches?(event) ||
  (@current == 0 and @previous[-1].matches?(event))
end

def next( event )

def next( event )
  if @current == 0
    rv = super
    return rv if rv
    @prior = @previous.pop
    return @prior.next( event )
  end
  super
end