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 ``handle_indices``. If a
  handle index is invalid, then its FQNs are omitted from the returned
  list.
docstr_tok: ["Returns","a","list","of","FQNs","for","each","handle","in","``","handle_indices","``",".","If","a","handle","index","is","invalid",",","then","its","FQNs","are","omitted","from","the","returned","list","."]
code: def _get_names_from_handle_indices(
      self,
      handle_indices: Tuple[int, ...],
  ) -> List[List[str]]:
      """
      Returns a list of FQNs for each handle in ``handle_indices``. If a
      handle index is invalid, then its FQNs are omitted from the returned
      list.
      """
      fqns: List[List[str]] = []
      for index in handle_indices:
          if (
              index is None
              or index < 0
              or index >= len(self.all_handles)
          ):
              continue
          handle = self.all_handles[index]
          flat_param = handle.flat_param
          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 10 for calling the _ExecOrderData obj's underlying member method code with example usage: obj._get_names_from_handle_indices(handle_indices) and returns: fqns