code: def preceding_leaf(node: Optional[LN]) -> Optional[Leaf]:
      """Return the first leaf that precedes `node`, if any."""
      while node:
          res = node.prev_sibling
          if res:
              if isinstance(res, Leaf):
                  return res
  
              try:
                  return list(res.leaves())[-1]
  
              except IndexError:
                  return None
  
          node = node.parent
      return None
  
imports: import sys
  from typing import Final, Generic, Iterator, List, Optional, Set, Tuple, TypeVar, Union
  from mypy_extensions import mypyc_attr
  from black.cache import CACHE_DIR
  from black.mode import Mode, Preview
  from black.strings import get_string_prefix, has_triple_quotes
  from blib2to3 import pygram
  from blib2to3.pgen2 import token
  from blib2to3.pytree import NL, Leaf, Node, type_repr
label_desc: Use image node_id 3 for calling a global function with example usage: preceding_leaf(node) and returns: None, res, list, None