code: def _add_monomer(self, monomer, mon_vector, move_direction):
          
          translate_by = self.molecule.cart_coords[self.end] + \
                         self.link_distance * move_direction
          monomer.translate_sites(range(len(monomer)), translate_by)
          if not self.linear_chain:
              self._align_monomer(monomer, mon_vector, move_direction)
          # add monomer if there are no crossings
          does_cross = False
          for i, site in enumerate(monomer):
              try:
                  self.molecule.append(site.specie, site.coords,
                                       properties=site.properties)
              except:
                  does_cross = True
                  polymer_length = len(self.molecule)
                  self.molecule.remove_sites(
                      range(polymer_length - i, polymer_length))
                  break
          if not does_cross:
              self.length += 1
              self.end += len(self.monomer)
docs: extend the polymer molecule by adding a monomer along mon_vector direction
  
          Args:
              monomer (Molecule): monomer molecule
              mon_vector (numpy.array): monomer vector that points from head to tail.
              move_direction (numpy.array): direction along which the monomer
                  will be positioned