code: def __up(self, onlyrecord=False):
          
          if self.__curcommand.must_follow is not None:
              if not self.__curcommand.parent:
                  prevcmd = self.result[-1] if len(self.result) else None
              else:
                  prevcmd = self.__curcommand.parent.children[-2] \
                      if len(self.__curcommand.parent.children) >= 2 else None
              if prevcmd is None or prevcmd.name not in self.__curcommand.must_follow:
                  raise ParseError("the %s command must follow an %s command" %
                                   (self.__curcommand.name,
                                    " or ".join(self.__curcommand.must_follow)))
  
          if not self.__curcommand.parent:
              # collect current amount of hash comments for later
              # parsing into names and desciptions
              self.__curcommand.hash_comments = self.hash_comments
              self.hash_comments = []
              self.result += [self.__curcommand]
  
          if not onlyrecord:
              while self.__curcommand:
                  self.__curcommand = self.__curcommand.parent
                  # Make sure to detect all done tests (including 'not' ones).
                  condition = (
                      self.__curcommand and
                      self.__curcommand.get_type() == "test" and
                      self.__curcommand.iscomplete()
                  )
                  if condition:
                      continue
                  break
docs: Return to the current command's parent
  
          This method should be called each time a command is
          complete. In case of a top level command (no parent), it is
          recorded into a specific list for further usage.
  
          :param onlyrecord: tell to only record the new command into its parent.