public bool PropagatePropertyIfApplicable(Signal target)
 {
     if(target == null) throw new ArgumentNullException("target");
     if(!target.HasProperty(providedPropertyId) && WouldBePropagatedTo(target))
         buildProperty(target);
     return target.HasProperty(providedPropertyId);
 }