code: def parse_func_body(self):
          
          self.save()
          self._expected = []
          if self.next_is_rc(Tokens.OPAR, False):  # do not render right hidden
              self.handle_hidden_right()  # render hidden after new level
              args = self.parse_param_list()
              if args is not None:  # may be an empty table
                  if self.next_is_rc(Tokens.CPAR, False):  # do not render right hidden
                      self.handle_hidden_right()  # render hidden after new level
                      body = self.parse_block()
                      if body:
                          self._expected = []
                          token = self.next_is_rc(Tokens.END, False)
                          if token:
                              body.stop_char = token.stop
                              self.success()
                              return args, body
                          else:
                              self.abort()
                  else:
                      self.abort()
          return self.failure()
docs: If success, return a tuple (args, body)