docs: def item(self, subject_id=None, visit_id=None):
          """
          Returns a particular fileset|field in the collection corresponding to
          the given subject and visit_ids. subject_id and visit_id must be
          provided for relevant frequencies. Note that subject_id/visit_id can
          also be provided for non-relevant frequencies, they will just be
          ignored.
  
          Parameter
          ---------
          subject_id : str
              The subject id of the item to return
          visit_id : str
              The visit id of the item to return
          """
  
          if self.frequency == 'per_session':
              if subject_id is None or visit_id is None:
                  raise ArcanaError(
                      "The 'subject_id' ({}) and 'visit_id' ({}) must be "
                      "provided to get an item from {}".format(
                          subject_id, visit_id, self))
              try:
                  subj_dct = self._collection[subject_id]
              except KeyError:
                  raise ArcanaIndexError(
                      subject_id,
                      "{} not a subject ID in '{}' collection ({})"
                      .format(subject_id, self.name,
                              ', '.join(self._collection.keys())))
              try:
                  fileset = subj_dct[visit_id]
              except KeyError:
                  raise ArcanaIndexError(
                      visit_id,
                      "{} not a visit ID in subject {} of '{}' "
                      "collection ({})"
                      .format(visit_id, subject_id, self.name,
                              ', '.join(subj_dct.keys())))
          elif self.frequency == 'per_subject':
              if subject_id is None:
                  raise ArcanaError(
                      "The 'subject_id' arg must be provided to get "
                      "the match from {}"
                      .format(self))
              try:
                  fileset = self._collection[subject_id]
              except KeyError:
                  raise ArcanaIndexError(
                      subject_id,
                      "{} not a subject ID in '{}' collection ({})"
                      .format(subject_id, self.name,
                              ', '.join(self._collection.keys())))
          elif self.frequency == 'per_visit':
              if visit_id is None:
                  raise ArcanaError(
                      "The 'visit_id' arg must be provided to get "
                      "the match from {}"
                      .format(self))
              try:
                  fileset = self._collection[visit_id]
              except KeyError:
                  raise ArcanaIndexError(
                      visit_id,
                      "{} not a visit ID in '{}' collection ({})"
                      .format(visit_id, self.name,
                              ', '.join(self._collection.keys())))
          elif self.frequency == 'per_study':
              try:
                  fileset = self._collection[0]
              except IndexError:
                  raise ArcanaIndexError(
                      "'{}' Collection is empty so doesn't have a "
                      "per_study node".format(self.name))
          return fileset