internal void RegisterChild(IDataflowDependency childMeta, bool allowDuplicate) { var child = childMeta.Unwrap(); if (m_children.Any(cm => object.ReferenceEquals(cm.Unwrap(), child))) { if (allowDuplicate) { LogHelper.Logger.DebugFormat("Duplicate child registration ignored in {0}: {1}", this.FullName, childMeta.DisplayName); return; } else { throw new ArgumentException("Duplicate child to register in " + this.FullName); } } m_children = m_children.Add(childMeta); if (!m_completionTask.IsValueCreated) { //eagerly initialize completion task //would look better if Lazy<T> provides an EagerEvaluate() method var t = m_completionTask.Value; } }