The way to do this is by having a scope that matches the whole method
"head" (`at: anIndex put: aValue`, say) and add that to the symbol list
with a transformation removing the parameters.
This is not generally a trivial task, but it can be done if you can
either find a simpler matcher (usually a match instead of a begin/end
pair) or a clean separator between a method's head and body (the "hard"
way), or if you're fine without having separate scopes for method head,
body and (complete) definition.
In your example, if you can do without the `'#language_elements`
inclusion you could try a matcher like
^([-+])\s+((\w+:?)(\s*\w+)?)+
to match the whole line at once and assign some scope to the 0 capture.
I'll have to document the "hard" way properly some day, but the gist is
you can match a construct of the form `X stuff Y more Z` with a pair
of begin/end matchers for X and Z and then including nested begin/end
matchers for X to Y and Y to Z using lots of lookaheads and -behinds.
An example is included in my Maude grammar[1] as the `#operator` rule
with a matcher for the whole operator construct and nested matchers for
its range, domain and definition.
Hope that helps anyway?