I don't think this conditional is right; it's when there's a block given and `args.empty?` that the block is treated in a special way we're deprecating, right?

Actually, I think it might be good to refactor this and combine it with the `inner_implementation_action` assignment:

``` ruby
if block_given?
  if args.empty?
    RSpec.deprecate "the message"
  else
    self.inner_implementation_action = block
  end
end
```

This makes the relationship between these two things more clear and also removes the double trailing conditional for the `inner_implementation_block` assignment -- I like ruby's trailing conditionals, but having a trailing `if` that is then further modified by a trailing `unless` is a bit much.