def _link_components(self) -> None:
        """Register 'listeners' within pipeline components, to allow them to
        effectively share weights.
        """
        # I had thought, "Why do we do this inside the Language object? Shouldn't
        # it be the tok2vec/transformer/etc's job?
        # The problem is we need to do it during deserialization...And the
        # components don't receive the pipeline then. So this does have to be
        # here :(
        # First, fix up all the internal component names in case they have
        # gotten out of sync due to sourcing components from different
        # pipelines, since find_listeners uses proc2.name for the listener
        # map.
        for name, proc in self.pipeline:
            if hasattr(proc, "name"):
                proc.name = name
        for i, (name1, proc1) in enumerate(self.pipeline):
            if isinstance(proc1, ty.ListenedToComponent):
                proc1.listener_map = {}
                for name2, proc2 in self.pipeline[i + 1 :]:
                    proc1.find_listeners(proc2)
Register 'listeners' within pipeline components, to allow them to
        effectively share weights.
        
spacy/language.py