docs: def load_feature_lists(self, feature_lists):
          """
          Load pickled features for train and test sets, assuming they are saved
          in the `features` folder along with their column names.
  
          Args:
              feature_lists: A list containing the names of the feature lists to load.
  
          Returns:
              A tuple containing 3 items: train dataframe, test dataframe,
              and a list describing the index ranges for the feature lists.
          """
  
          column_names = []
          feature_ranges = []
          running_feature_count = 0
  
          for list_id in feature_lists:
              feature_list_names = load_lines(self.features_dir + 'X_train_{}.names'.format(list_id))
              column_names.extend(feature_list_names)
              start_index = running_feature_count
              end_index = running_feature_count + len(feature_list_names) - 1
              running_feature_count += len(feature_list_names)
              feature_ranges.append([list_id, start_index, end_index])
  
          X_train = np.hstack([
              load(self.features_dir + 'X_train_{}.pickle'.format(list_id))
              for list_id in feature_lists
          ])
          X_test = np.hstack([
              load(self.features_dir + 'X_test_{}.pickle'.format(list_id))
              for list_id in feature_lists
          ])
  
          df_train = pd.DataFrame(X_train, columns=column_names)
          df_test = pd.DataFrame(X_test, columns=column_names)
  
          return df_train, df_test, feature_ranges