Asynchronously loads and returns metadata as a Map of String to dynamic. Returns null by default.
Future<Map<String, dynamic>?> loadMetadata() async => null;