it should typehint to `Metadata\MetadataFactoryInterface` instead