def METHOD_NAME(self, role: str) -> Metadata:
    """Return current Metadata for role from 'storage' (or create a new one)"""
    if role not in self.role_cache:
        signed_init = _signed_init.get(role, Targets)
        md = Metadata(signed_init())
        # this makes version bumping in close() simpler
        md.signed.version = 0
        return md
    # return latest metadata from storage (but don't return a reference)
    return copy.deepcopy(self.role_cache[role][-1])