docs: def side_chain_environment(self, cutoff=4, include_neighbours=True,
                                 inter_chain=True, include_ligands=False, include_solvent=False):
          """Finds `Residues` with any atom within the cutoff distance of side-chain.
  
          Notes
          -----
          Includes the parent residue in the list.
  
          Parameters
          ----------
          cutoff : float, optional
              Maximum inter-atom distance for residue to be included.
              Defaults to 4.
          include_neighbours : bool, optional
              If `false`, does not return `Residue` at i-1, i+1 positions
              in same chain as `Residue`.
          inter_chain : bool, optional
              If `false`, only includes nearby `Residue` in the same chain
              as the `Residue`.
          include_ligands : bool, optional
              If `true`, `Residue` classed as ligands but not identified as
              solvent will be included in the environment.
          include_solvent : bool, optional
              If `true`, Monomers classed as categorised as solvent
              will be included in the environment.
  
          Returns
          -------
          sc_environment : list
              List of monomers within cutoff distance of side-chain.
          """
          if self.mol_code == 'GLY':
              return [self]
          side_chain_dict = {x: {y: self.states[x][y]
                                 for y in self.states[x] if self.states[x][y] in
                                 self.side_chain} for x in self.states}
          side_chain_monomer = Monomer(
              atoms=side_chain_dict, monomer_id=self.id,
              ampal_parent=self.ampal_parent)
          sc_environment = side_chain_monomer.environment(
              cutoff=cutoff, include_ligands=include_ligands,
              include_neighbours=include_neighbours,
              include_solvent=include_solvent, inter_chain=inter_chain)
          return sc_environment