private void InsertOrUpdateChildren(IDataContext dataContext, ICrossRefItemList crList)
        {
            var filters = new List<ColumnFilter>();

            foreach (var fieldMapping in ChildMappings.Where(m => m.IsKey))
            {
                ColumnFilter filter;
                if (!fieldMapping.TryCreateFilter(dataContext, out filter))
                    return;

                filters.Add(filter);
            }

            var itemIds = RuntimeDatabase.FindItems(ReferencedProcessName, filters);

            if (itemIds.Count > 0)
            {
                foreach (var id in itemIds)
                {
                    UpdateChild(dataContext, id);
                    if (!crList.Contains(id))
                        crList.Assign(id);
                }
            }
            else
            {
                var child = CreateChild(dataContext);
                if (!crList.Contains(child.Id))
                    crList.Assign(child.Id);
            }
        }