private void ProcessNewLink(FunctionReference link)
{
if (link == null) return;
var sourceHost = _surface.Children.OfType<ActivityHost>().FirstOrDefault(c => c.Id == link.SourceId);
var targetHost = _surface.Children.OfType<ActivityHost>().FirstOrDefault(c => c.Id == link.TargetId);
var sourceConnector = sourceHost.View.FindConnectorByName(link.SourcePin);
var targetConnector = targetHost.View.FindConnectorByName(link.TargetPin);
var conn = new LinkHost(_surface, link, sourceConnector, targetConnector, Orientation.Vertical);
// TODO: outgoing links should be also kept by connector?
sourceHost.OutgoingLinks.Add(conn);
targetHost.OutgoingLinks.Add(conn);
// TODO: temp hack
sourceConnector.HasOutgoingConnections = true;
targetConnector.HasIncomingConnections = true;
_surface.Children.Add(conn);
}