code: def __init__(self, features: List[T]):
      self._features = features
      self._name_to_feature = {f.name: f for f in features}
      for k, v in self._name_to_feature.items():
          setattr(self, k, v)
  
imports: import logging
  from dataclasses import Field, field
  from typing import Any, Dict, Generic, Iterable, List, Optional, Tuple, TypeVar
  from marshmallow import fields, validate
  from rich.console import Console
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import AUDIO, BAG, BINARY, CATEGORY, DATE, H3, IMAGE, MODEL_ECD, MODEL_GBM, MODEL_LLM, NUMBER, SEQUENCE, SET, TEXT, TIMESERIES, VECTOR
  from ludwig.error import ConfigValidationError
  from ludwig.schema import utils
  from ludwig.schema.features.utils import ecd_input_config_registry, ecd_output_config_registry, gbm_input_config_registry, gbm_output_config_registry, get_input_feature_jsonschema, get_output_feature_jsonschema, llm_input_config_registry, llm_output_config_registry
  from ludwig.schema.metadata.parameter_metadata import INTERNAL_ONLY, ParameterMetadata
  from ludwig.schema.utils import ludwig_dataclass
label_desc: Use image node_id 1 to create a new FeatureCollection object from inherited base classes: Generic, schema_utils with example: obj = FeatureCollection(features)