@classmethod
def create(cls, pop, parameter, source, dest):
    """
        Create and wire up a new link

        This method instantiates a Link (including of derived types) and also wires it up to
        the population, parameter, source, and destination compartments. This allows the ``Link``
        constructor to be used without needing the entire population infrastructure

        :param pop: A ``Population`` instance that will contain the new ``Link``
        :param parameter: A ``Parameter`` instance that will supply values for the new ``Link``
        :param source: A ``Compartment`` instance to transfer from
        :param dest: A ``Compartment`` instance to transfer to
        :return: The newly created ``Link`` instance

        """
    new_link = cls(pop, parameter, source, dest)
    new_link.parameter.links.append(new_link)
    new_link.source.outlinks.append(new_link)
    new_link.dest.inlinks.append(new_link)
    pop.links.append(new_link)
    if new_link.name in pop.link_lookup:
        pop.link_lookup[new_link.name].append(new_link)
    else:
        pop.link_lookup[new_link.name] = [new_link]
    return new_link
