class ActiveSupport::Callbacks::CallTemplate::InstanceExec2

def expand(target, value, block)

def expand(target, value, block)
  raise ArgumentError unless block
  [target, @override_block || block, :instance_exec, target, block]
end

def initialize(block)

def initialize(block)
  @override_block = block
end

def inverted_lambda

def inverted_lambda
  lambda do |target, value, &block|
    raise ArgumentError unless block
    !target.instance_exec(target, block, &@override_block)
  end
end

def make_lambda

def make_lambda
  lambda do |target, value, &block|
    raise ArgumentError unless block
    target.instance_exec(target, block, &@override_block)
  end
end