docs: def proc_monomer(self, monomer_info, parent, mon_cls=False):
          """Processes a records into a `Monomer`.
  
          Parameters
          ----------
          monomer_info : (set, OrderedDict)
              Labels and data for a monomer.
          parent : ampal.Polymer
              `Polymer` used to assign `ampal_parent` on created
              `Monomer`.
          mon_cls : `Monomer class or subclass`, optional
              A `Monomer` class can be defined explicitly.
          """
          monomer_labels, monomer_data = monomer_info
          if len(monomer_labels) > 1:
              raise ValueError(
                  'Malformed PDB, single monomer id with '
                  'multiple labels. {}'.format(monomer_labels))
          else:
              monomer_label = list(monomer_labels)[0]
          if mon_cls:
              monomer_class = mon_cls
              het = True
          elif monomer_label[0] == 'ATOM':
              if monomer_label[2] in standard_amino_acids.values():
                  monomer_class = Residue
              else:
                  monomer_class = Nucleotide
              het = False
          else:
              raise ValueError('Unknown Monomer type.')
          monomer = monomer_class(
              atoms=None, mol_code=monomer_label[2], monomer_id=monomer_label[1],
              insertion_code=monomer_label[3], is_hetero=het, ampal_parent=parent
          )
          monomer.states = self.gen_states(monomer_data.values(), monomer)
          monomer._active_state = sorted(monomer.states.keys())[0]
          return monomer