code: def lisp_to_nested_expression(lisp_string: str) -> List:
      
      stack: List = []
      current_expression: List = []
      tokens = lisp_string.split()
      for token in tokens:
          while token[0] == '(':
              nested_expression: List = []
              current_expression.append(nested_expression)
              stack.append(current_expression)
              current_expression = nested_expression
              token = token[1:]
          current_expression.append(token.replace(')', ''))
          while token[-1] == ')':
              current_expression = stack.pop()
              token = token[:-1]
      return current_expression[0]
docs: Takes a logical form as a lisp string and returns a nested list representation of the lisp.
      For example, "(count (division first))" would get mapped to ['count', ['division', 'first']].