# File lib/parslet/atoms/lookahead.rb, line 24
  def try(source, context, consume_all)
    pos = source.pos

    success, value = bound_parslet.apply(source, context, consume_all)
    
    if positive
      return succ(nil) if success
      return context.err_at(self, source, @error_msgs[:positive], pos)
    else
      return succ(nil) unless success
      return context.err_at(self, source, @error_msgs[:negative], pos)
    end
    
  # This is probably the only parslet that rewinds its input in #try.
  # Lookaheads NEVER consume their input, even on success, that's why. 
  ensure 
    source.pos = pos
  end