class_docstr: PipelineFeatureGenerator is an implementation of BulkFeatureGenerator with various smart defaults and edge case handling functionality to enable
  robust data handling.
  It is recommended that users base any custom feature generators meant for end-to-end data transformation from PipelineFeatureGenerator.
      Reference AutoMLPipelineFeatureGenerator for an example of extending PipelineFeatureGenerator.
  It is not recommended that PipelineFeatureGenerator be used as a generator within any other generator's pre or post generators.
code: def _remove_features_in(self, features: list):
      super()._remove_features_in(features)
      if features:
          self._feature_metadata_in_real = (
              self._feature_metadata_in_real.remove_features(
                  features=features
              )
          )
  
imports: import copy
  import logging
  from pandas import DataFrame
  from autogluon.common.features.feature_metadata import FeatureMetadata
  from autogluon.common.features.infer_types import get_type_map_real
  from autogluon.common.utils.pandas_utils import get_approximate_df_mem_usage
  from autogluon.common.utils.resource_utils import ResourceManager
  from .bulk import BulkFeatureGenerator
  from .drop_unique import DropUniqueFeatureGenerator
  from .dummy import DummyFeatureGenerator
  from .fillna import FillNaFeatureGenerator
label_desc: Use image node_id 6 for calling the PipelineFeatureGenerator obj's underlying member method code with example usage: obj._remove_features_in(features) without return types