abstract class ProtocolHandler { void register(String scheme, {String? executable, List? arguments}); void unregister(String scheme); List getArguments(List? arguments) { if (arguments == null) return ['%s']; if (arguments.isEmpty && !arguments.any((e) => e.contains('%s'))) { throw ArgumentError('arguments must contain at least 1 instance of "%s"'); } return arguments; } }