Custom compare function. Returns ``1`` if the first ``Piper`` instance 
        is upstream of the second ``Piper`` instance, ``-1`` if the first 
        ``Piper`` is downstream of the second ``Piper`` and ``0`` if the two 
        ``Pipers`` are independent.
        
        Arguments:
        
          - piper1(``Piper``) ``Piper`` instance.
          - piper2(``Piper``) ``Piper`` instance.

def children_after_parents(self, piper1, piper2):
        """
        Custom compare function. Returns ``1`` if the first ``Piper`` instance 
        is upstream of the second ``Piper`` instance, ``-1`` if the first 
        ``Piper`` is downstream of the second ``Piper`` and ``0`` if the two 
        ``Pipers`` are independent.
        
        Arguments:
        
          - piper1(``Piper``) ``Piper`` instance.
          - piper2(``Piper``) ``Piper`` instance.
          
        """
        if piper1 in self[piper2].deep_nodes():
            return 1
        elif piper2 in self[piper1].deep_nodes():
            return - 1
        else:
            return 0