'Return `True` if `link` would introduce a cycle in the scheme.
Parameters
link : :class:`.SchemeLink`'

def creates_cycle(self, link):

    check_type(link, SchemeLink)
    (source_node, sink_node) = (link.source_node, link.sink_node)
    upstream = self.upstream_nodes(source_node)
    upstream.add(source_node)
    return (sink_node in upstream)
