class_docstr: This contains the data structures to track the execution order. We track
  the pre-forward order on the *first* iteration for forward prefetching
  (which thus assumes static graph) and the post-forward order on *every*
  iteration for backward prefetching (which thus does not assume static
  graph but may be provide an incorrect order).
docstr: Returns a list of FQNs for each handle in ``handles_key``. If a handle
  is invalid, then its FQNs are omitted from the returned list.
docstr_tok: ["Returns","a","list","of","FQNs","for","each","handle","in","``","handles_key","``",".","If","a","handle","is","invalid",",","then","its","FQNs","are","omitted","from","the","returned","list","."]
code: def _get_names_from_handles(
      self,
      handle: FlatParamHandle,
  ) -> List[List[str]]:
      """
      Returns a list of FQNs for each handle in ``handles_key``. If a handle
      is invalid, then its FQNs are omitted from the returned list.
      """
      fqns: List[List[str]] = []
      if handle:
          flat_param = handle.flat_param
          if flat_param in self.param_to_fqn:
              fqns.append(self.param_to_fqn[flat_param])
      return fqns
  
imports: import itertools
  import warnings
  from enum import auto, Enum
  from typing import Dict, List, Optional, Tuple, Union
  import torch
  import torch.distributed
  import torch.distributed.fsdp._traversal_utils
  import torch.nn
  from torch.distributed.fsdp._common_utils import _FSDPState, _get_param_to_fqns
  from torch.distributed.fsdp._flat_param import FlatParamHandle
label_desc: Use image node_id 11 for calling the _ExecOrderData obj's underlying member method code with example usage: obj._get_names_from_handles(handle) and returns: fqns