what is special about the first versus the rest is that this type of parent "extraction" is for binary ops that can be chained e.g. "p or q and s" where the first value is there and the rest are packaged from the parser with the operation e.g. [p, (or, q), (and, s)].  i tried to group these parent-finding functions, but they are difficult because they depend on how the parser returns the tokens.  there are essentially 5 groups (right now):

1. no children (`[]`)
2. just the node's value (`[self.value]`)
3. the nodes inside a node's value (`[val for val in self.value]`)
4. this type of extraction for binary stuff
5. the map op special case

i think that this should be refactored, but am not sure on the best way.  i have opened issue #517 so that we can keep this discussion going after we merge this pr in.