Point ComputeStartPoint(IConnectable firstPoint, IConnectable nextPoint, ref double startPointRelativePos, ref ConnectorDocking docking, ref ulong connectorStartPort) { var start = _startPointHint; if (docking == ConnectorDocking.Undefined) { start = firstPoint.GetPreferredConnectorStart(start, out startPointRelativePos, out docking, out connectorStartPort); if (connectorStartPort == 0) { start = ConnectorUtilities.ComputeCenter(nextPoint.Bounds); start = firstPoint.GetPreferredConnectorStart(start, out startPointRelativePos, out docking, out connectorStartPort); } } else { start = firstPoint.GetConnectorPoint(docking, startPointRelativePos, connectorStartPort); } return(start); }