docs: def assign_statement(self):
          """
          assign smt  : variable ASSIGN expression(;)
          Feature Type Array adds:
                      | variable SETITEM expression(;)
          """
          left = self.variable()
          op = self.cur_token
          self.eat(TokenTypes.ASSIGN)
          right = self.expression()
          smt = None
          if Features.TYPE_ARRAY in self.features and isinstance(left, GetArrayItem):
              # Remake this as a setitem.
              smt = SetArrayItem(left.left, left.right, right)
          else:
              smt = Assign(op, left, right)
          if self.cur_token.type == TokenTypes.SEMI_COLON:
              self.eat(TokenTypes.SEMI_COLON)
          return smt