def each_input_coupling(port = nil)
      return enum_for(:each_input_coupling) unless block_given?
      if port.nil?
        _input_couplings.each { |s,ary| ary.each { |d| yield(s,d) }}
      else
        i = 0
        ary = _input_couplings[port]
        while i < ary.size
          yield(port, ary[i])
          i += 1
        end
      end
    end
def each_input_coupling(port = nil)
      return enum_for(:each_input_coupling) unless block_given?
      if port.nil?
        _input_couplings.each { |s,ary| ary.each { |d| yield(s,d) }}
      else
        i = 0
        ary = _input_couplings[port]
        while i < ary.size
          yield(port, ary[i])
          i += 1
        end
      end
    end
Calls <tt>block</tt> once for each external input coupling (EIC) in
 {#input_couplings}, 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 port [Port, nil] the source port or nil
 @yieldparam source_port [Port] the source port
 @yieldparam destination_port [Port] the destination port