def each_coupling(port = nil, &block)
      return enum_for(:each_coupling) unless block
      each_input_coupling(port, &block)
      each_internal_coupling(port, &block)
      each_output_coupling(port, &block)
    end
def each_coupling(port = nil, &block)
      return enum_for(:each_coupling) unless block
      each_input_coupling(port, &block)
      each_internal_coupling(port, &block)
      each_output_coupling(port, &block)
    end
Calls <tt>block</tt> once for each coupling in passing that element as a
 parameter. If a port is given, it is used to filter the couplings having
 this port as a source.

 @param ary [Array] the array of couplings, defaults to {#couplings}
 @param port [Port, nil] the source port or nil
 @yieldparam source_port [Port] the source port
 @yieldparam destination_port [Port] the destination port