code: def parse_tokens(self, tokens):
          
          if len(tokens) == 1:
              return list(), tokens, {"kubectl": self.ast.help}
          else:
              tokens.reverse()
          parsed, unparsed, suggestions = self.treewalk(self.ast, parsed=list(), unparsed=tokens)
          if not suggestions and unparsed:
              # TODO: @vogxn: This is hack until we include expected value types for each option and argument.
              # Whenver we recieve no suggestions but are left with unparsed tokens we pop the value and walk the
              # tree again without values
              logger.debug("unparsed tokens remain, possible value encountered")
              unparsed.pop()
              parsed.reverse()
              unparsed.extend(parsed)
              logger.debug("resuming treewalk with tokens: %s", unparsed)
              return self.treewalk(self.ast, parsed=list(), unparsed=unparsed)
          else:
              return parsed, unparsed, suggestions
docs: Parse a sequence of tokens
  
          returns tuple of (parsed tokens, suggestions)