Hi John,
I don't quite understand your first point about parsing... Could you clarify what you mean by this?
When an options pattern is defined as options:OptionsPattern[], callling options will return a Sequence. Try evaluating the following to see what I mean:
Options[f] = {"a" -> 1, "b" -> 2};
f[options : OptionsPattern[]] := options;
f["a" -> 3, "b" -> 4]
I therefore generally wrap options in a List to make it easier to deal with. In fact, the functions FreeQ and DeleteCases will not work if they are fed a (multi-element) sequence in the first argument.
I tested for RoundingRadius instead of "RoundingRadius" because the Framed function accepts the option name without quotes. (It also accepts it with quotes.)
You are correct in both of your last points! Using Alternatives inside DeleteCases isn't necessary when there is only one case to delete, and the entire statement could be replaced with options because the rounding radius option is being taken care of by the Condition. Thanks for pointing these out – I will remove them from the notebook.