code: def outputs(self) -> list[OutputEffect] | None:
      # output (, output)*
      here = self.getpos()
      if outp := self.output():
          near = self.getpos()
          if self.expect(lx.COMMA):
              if rest := self.outputs():
                  return [outp] + rest
          self.setpos(near)
          return [outp]
      self.setpos(here)
      return None
  
imports: from dataclasses import dataclass, field
  from typing import NamedTuple, Callable, TypeVar, Literal, cast
  import lexer
  from plexer import PLexer
label_desc: Use image node_id 7 for calling the Parser obj's underlying member method code with example usage: obj.outputs() and returns: None, list, unknown