code: def _parse_metafiles(self, metafile_input):
          
          all_metafiles = AwsConstants.S2_L1C_METAFILES if self.data_source is DataSource.SENTINEL2_L1C else \
              AwsConstants.S2_L2A_METAFILES
  
          if metafile_input is None:
              if self.__class__.__name__ == 'SafeProduct':
                  return all_metafiles
              if self.__class__.__name__ == 'SafeTile':
                  return [metafile for metafile in all_metafiles if metafile in AwsConstants.TILE_FILES]
              return []
          if isinstance(metafile_input, str):
              metafile_list = metafile_input.split(',')
          elif isinstance(metafile_input, list):
              metafile_list = metafile_input.copy()
          else:
              raise ValueError('metafiles parameter must be a list or a string')
          metafile_list = [metafile.strip().split('.')[0] for metafile in metafile_list]
          metafile_list = [metafile for metafile in metafile_list if metafile != '']
          if not set(metafile_list) <= set(all_metafiles):
              raise ValueError('metadata files {} must be a subset of {}'.format(metafile_list, all_metafiles))
          return metafile_list
docs: Parses class input and verifies metadata file names.
  
          :param metafile_input: class input parameter `metafiles`
          :type metafile_input: str or list(str) or None
          :return: verified list of metadata files
          :rtype: list(str)