altering provider name caching to reliably resolve the same dependency to the same name to prepare for writing dependencies in provider fields and constructors