code: def get_sites(self):
          
          st = self.site_text
          suffixes = [' residue', ' residues', ',', '/']
          for suffix in suffixes:
              if st.endswith(suffix):
                  st = st[:-len(suffix)]
          assert(not st.endswith(','))
  
          # Strip parentheses
          st = st.replace('(', '')
          st = st.replace(')', '')
          st = st.replace(' or ', ' and ')  # Treat end and or the same
  
          sites = []
          parts = st.split(' and ')
          for part in parts:
              if part.endswith(','):
                  part = part[:-1]
              if len(part.strip()) > 0:
                  sites.extend(ReachProcessor._parse_site_text(part.strip()))
          return sites
docs: Parse the site-text string and return a list of sites.
  
          Returns
          -------
          sites : list[Site]
              A list of position-residue pairs corresponding to the site-text