def attach_input(myport, to:, of:)
      receiver = of.is_a?(Coupleable) ? of : fetch_child(of)
      p1 = self.find_or_create_input_port_if_necessary(myport)
      p2 = receiver.find_or_create_input_port_if_necessary(to)
      attach(p1, to: p2)
    end
def attach_input(myport, to:, of:)
      receiver = of.is_a?(Coupleable) ? of : fetch_child(of)
      p1 = self.find_or_create_input_port_if_necessary(myport)
      p2 = receiver.find_or_create_input_port_if_necessary(to)
      attach(p1, to: p2)
    end
Adds an external input coupling (EIC) to self. Establish a relation
 between a self input port and a child input port.

 @param myport [String,Symbol] the source input port of the external input coupling
 @param to [String,Symbol] the destination input port of the external input coupling
 @param of [Coupleable,String,Symbol] the component that will receive inputs

 @note If given port names *myport* and *iport* doesn't exist within their
   host (respectively *self* and *child*), they will be automatically
   generated.
 @example
   attach_input :in, to: :in, of: child
 @example
   attach_input :in, to: :in, of: :my_component