code: def apply_feature_processors_to_kjt_list(
      self, dist_input: KJTList
  ) -> KJTList:
      kjt_list = []
      for features in dist_input:
          if self._is_collection:
              kjt_list.append(self._feature_processors(features))
          else:
              kjt_list.append(
                  apply_feature_processors_to_kjt(
                      features,
                      self._feature_processors,
                  )
              )
      return KJTList(kjt_list)
  
imports: from functools import partial
  from typing import Any, Dict, Iterator, List, Optional, Type, Union
  import torch
  from torch import nn
  from torchrec.distributed.embedding_types import BaseEmbeddingSharder, KJTList, ShardedEmbeddingModule
  from torchrec.distributed.embeddingbag import EmbeddingBagCollectionContext, EmbeddingBagCollectionSharder, ShardedEmbeddingBagCollection
  from torchrec.distributed.types import Awaitable, LazyAwaitable, ParameterSharding, QuantizedCommCodecs, ShardingEnv, ShardingType
  from torchrec.distributed.utils import append_prefix, init_parameters
  from torchrec.modules.feature_processor_ import FeatureProcessorsCollection
  from torchrec.modules.fp_embedding_modules import apply_feature_processors_to_kjt, FeatureProcessedEmbeddingBagCollection
  from torchrec.sparse.jagged_tensor import KeyedJaggedTensor, KeyedTensor
label_desc: Use image node_id 3 for calling the ShardedFeatureProcessedEmbeddingBagCollection obj's underlying member method code with example usage: obj.apply_feature_processors_to_kjt_list(dist_input) and returns: KJTList