+1 for better test-ability. Does this need to be synchronized? The `MetadataProvider` interface is `@NotThreadSafe`.