def method_missing(meth, *args, &block)
if args.size == 1 && args.first.kind_of?(Adapters::AbstractAdapter)
if (match = meth.to_s.match(/^(.*)_if_(none|begin|rollback|commit)$/))
if self.respond_to?(match[1], true)
if state_for(args.first).to_s == match[2]
self.send(match[1], args.first)
end
else
super
end
elsif (match = meth.to_s.match(/^(.*)_unless_(none|begin|rollback|commit)$/))
if self.respond_to?(match[1], true)
unless state_for(args.first).to_s == match[2]
self.send(match[1], args.first)
end
else
super
end
else
super
end
else
super
end
end