code: def collect_changes(self):
          
  
          file_diffs = self._collect_file_diffs()
          candidate_feature_diffs, valid_init_diffs, inadmissible_diffs = \
              self._categorize_file_diffs(file_diffs)
          new_feature_info = self._collect_feature_info(candidate_feature_diffs)
  
          return CollectedChanges(
              file_diffs, candidate_feature_diffs, valid_init_diffs,
              inadmissible_diffs, new_feature_info)
docs: Collect file and feature changes
  
          Steps
          1. Collects the files that have changed in this pull request as
             compared to a comparison branch.
          2. Categorize these file changes into admissible or inadmissible file
             changes. Admissible file changes solely contribute python files to
             the contrib subdirectory.
          3. Collect features from admissible new files.
  
          Returns:
              CollectedChanges