The icon is the primary part--the node labels are placed just above and below the icon. The ports go on their respective sides of the icon, positioned contiguously and centered vertically. The ports are always next to the icon, and their respective labels are expected to be outside, as determined by GoGeneralNodePort.LayoutLabel. If there are too many ports to fit alongside the Icon, the Icon is stretched, unless the icon's GoObject.AutoRescales property is false. Of course when Orientation is Orientation.Vertical, all of the left/right and up/down directions are exchanged. When GoObject.Initializing is true, this method does nothing.