code: def restrict(self, support):
          
          if self.has_been_restricted == True:
              return self
  
          new_numerical_cols = []
          new_categorical_cols = []
          new_additional_numerical_cols = []
          new_feature_names = []
          new_vocab = {}
  
          for idx, val in enumerate(support):
              if val == True:
                  feature_name = self.feature_names_[idx]
                  if self.separator in feature_name:
                      base_feature_name = feature_name[:feature_name.rfind(self.separator)]
                  else:
                      base_feature_name = feature_name
                  new_feature_names.append(feature_name)
                  new_vocab[feature_name] = len(new_vocab)
                  if feature_name in self.numerical_columns:
                      new_numerical_cols.append(feature_name)
                  elif base_feature_name in self.categorical_columns and base_feature_name not in new_categorical_cols:
                      new_categorical_cols.append(base_feature_name)
                  elif feature_name in self.additional_numerical_cols:
                      new_additional_numerical_cols.append(feature_name)
  
          self.feature_names_ = new_feature_names
          self.vocabulary_ = new_vocab
          self.numerical_columns = new_numerical_cols
          self.categorical_columns = new_categorical_cols
          self.additional_numerical_cols = new_additional_numerical_cols
  
          self.has_been_restricted = True
          return self
docs: Restrict the features to those in support using feature selection.
  
          This function modifies the estimator in-place.