docs: def _addPort(n: LNode, lp: LPort, intf: Interface,
               reverseDirection=False):
      """
      add port to LPort for interface
      """
      origin = originObjOfPort(intf)
      d = intf._direction
      d = PortTypeFromDir(d)
  
      if reverseDirection:
          d = PortType.opposite(d)
  
      new_lp = LPort(lp, d, lp.side, name=intf._name)
      new_lp.originObj = origin
      if intf._interfaces:
          for child_intf in intf._interfaces:
              _addPort(n, new_lp, child_intf,
                       reverseDirection=reverseDirection)
  
      lp.children.append(new_lp)
      new_lp.parent = lp
      if n._node2lnode is not None:
          n._node2lnode[origin] = new_lp
  
      return new_lp