code: def _determine_next_study_id(self):
          
          if self._doc_counter_lock is None:
              self._doc_counter_lock = Lock()
          prefix = self._new_study_prefix
          lp = len(prefix)
          n = 0
          # this function holds the lock for quite awhile,
          #   but it only called on the first instance of
          #   of creating a new study
          with self._doc_counter_lock:
              with self._index_lock:
                  for k in self.study_index.keys():
                      if k.startswith(prefix):
                          try:
                              pn = int(k[lp:])
                              if pn > n:
                                  n = pn
                          except:
                              pass
              nsi_contents = self._read_master_branch_resource(self._id_minting_file, is_json=True)
              if nsi_contents:
                  self._next_study_id = nsi_contents['next_study_id']
                  if self._next_study_id <= n:
                      m = 'next_study_id in {} is set lower than the ID of an existing study!'
                      m = m.format(self._id_minting_file)
                      raise RuntimeError(m)
              else:
                  # legacy support for repo with no next_study_id.json file
                  self._next_study_id = n
                  self._advance_new_study_id()
docs: Return the numeric part of the newest study_id
  
          Checks out master branch as a side effect!