class Proc

def change?

def change?
  pre_result = yield
  call
  post_result = yield
  pre_result != post_result
end

def raise?(*exceptions)

def raise?(*exceptions)
  call
rescue *(exceptions.empty? ? RuntimeError : exceptions) => e
  e
else
  false
end

def throw?(sym)

def throw?(sym)
  catch(sym) {
    call
    return false
  }
  return true
end