Now, that doesn't mean this code sucks. It's actually decent in terms of reuse. But from a performance standpoint it is pretty bad.
Also, it lacks comments and it isn't easy to figure out what the options do. It's not a good example of naming, that's for sure, and since the options are not used in this method, you have to trace the code and remember things just to figure out what is going on.
Since the options aren't documented and I don't think anyone uses them, I didn't waste the time to try to figure out what they do, which is the reason home_run doesn't implement them.