def attach_output(oport, of:, to:)
      sender = of.is_a?(Coupleable) ? of : fetch_child(of)
      p1 = sender.find_or_create_output_port_if_necessary(oport)
      p2 = self.find_or_create_output_port_if_necessary(to)
      attach(p1, to: p2)
    end
def attach_output(oport, of:, to:)
      sender = of.is_a?(Coupleable) ? of : fetch_child(of)
      p1 = sender.find_or_create_output_port_if_necessary(oport)
      p2 = self.find_or_create_output_port_if_necessary(to)
      attach(p1, to: p2)
    end
Adds an external output coupling (EOC) to self. Establish a relation
 between an output port of one of self's children and one of self's
 output ports.

 @param oport [String,Symbol] the source output port of the external output coupling
 @param of [Coupleable,String,Symbol] the component that will send outputs
 @param to [String,Symbol] the destination port that will forward outputs

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