class_docstr: Represents an argument to a @jit'ed function.
  
  An argument is a parameter plus a value.
class_docstr_tok: ["Represents","an","argument","to","a","@","jit'ed","function",".","An","argument","is","a","parameter","plus","a","value","."]
code: def specialization_key(self):
      assert not self.param.do_not_specialize
  
      if hasattr(self.value, "data_ptr"):
          return (
              self.value.data_ptr() % JITFunction.divisibility == 0,
          )
  
      if isinstance(self.value, int):
          # bool is a subclass of int, so we don't check explicitly above.
          return (
              self.value % JITFunction.divisibility == 0,
              self.value % JITFunction.divisibility_8 == 0,
              self.value == 1,
          )
  
      return (False,)
  
imports: from __future__ import annotations, division
  import ast
  import hashlib
  import inspect
  import os
  import textwrap
  from collections import defaultdict, namedtuple
  from functools import cached_property
  from typing import Callable, Generic, Iterable, List, Optional, TypeVar, Union, cast, overload
  from ..runtime.driver import driver
label_desc: Use image node_id 4 for calling the KernelArg obj's underlying member method code with example usage: obj.specialization_key() and returns: False, unknown, unknown,  unknown,  unknown