Developer question about binding providers

Looking at the binding implementations, I see that the the binding designs usually have a binding provider class and that there can be 1…n binding providers. When is there is more than one binding provider? It seems that if there was more than one binding provider with a given binding type string (e.g., “http” or “astro”), the GenericItemProvider binding config dispatching would not work correctly since there is a hash table lookup using the binding type string as the key. I see the serial binding does not use a binding provider. I’m wondering if the developers could give me some insight into the design rationale and tradeoffs related to binding providers. Thanks.