selector is sometimes a Symbol, sometimes a SelectorNode!
On top of this, numArgs is needed due to the (truly grody) use of
arguments as a place to store the extra expressions needed to generate
code for in-line to:by:do:, etc. see below, where it is used.
For #ifTrue:ifFalse: and #whileTrue: / #whileFalse: style messages, the pc is set to the jump instruction, so that mustBeBoolean exceptions can be shown correctly.
For #ifTrue:ifFalse: and #whileTrue: / #whileFalse: style messages, the pc is set to the jump instruction, so that mustBeBoolean exceptions can be shown correctly.
Answer whether selector is selSymbol, and the predicates rcvrPred and argsPred
evaluate to true with respect to receiver and the list of arguments. If selSymbol or
either predicate is nil, it means 'don't care'. Note that argsPred takes numArgs
arguments. All block arguments are ParseNodes.