docs: def side_chain(self):
          """List of the side-chain atoms (R-group).
  
          Notes
          -----
          Returns empty list for glycine.
  
          Returns
          -------
          side_chain_atoms: list(`Atoms`)
          """
          side_chain_atoms = []
          if self.mol_code != 'GLY':
              covalent_bond_graph = generate_covalent_bond_graph(
                  find_covalent_bonds(self))
              try:
                  subgraphs = generate_bond_subgraphs_from_break(
                      covalent_bond_graph, self['CA'], self['CB'])
                  if len(subgraphs) == 1:
                      subgraphs = generate_bond_subgraphs_from_break(
                          subgraphs[0], self['CD'], self['N'])
                  if len(subgraphs) == 2:
                      for g in subgraphs:
                          if self['CB'] in g:
                              side_chain_atoms = g.nodes()
                              break
              except:
                  warning_message = "Malformed PDB for Residue {0}: {1}.".format(
                      self.id, self)
                  if 'CB' in self.atoms.keys():
                      side_chain_atoms.append(self['CB'])
                      warning_message += " Side-chain is just the CB atom."
                  else:
                      warning_message += " Empty side-chain."
                  warnings.warn(warning_message, MalformedPDBWarning)
          return side_chain_atoms