created component metadata type to remove circular dependency between component adapters and injectors and avoid ugly proxying work around