def assert_defined(&block)
      value = nil
      begin
        value = yield
      rescue NameError => e
        raise ArgumentError, udef_msg(e, block)
      end
      value
    end
def assert_defined(&block)
      value = nil
      begin
        value = yield
      rescue NameError => e
        raise ArgumentError, udef_msg(e, block)
      end
      value
    end
Calls (yields to) the given block, and asserts that it does not
 raise a NameError. Returns the return value of the block.
 @api private