 	@discardableResult
 	public func register<C: CommandProtocol>(_ commands: C...)
 		-> CommandRegistry
-		where C.ClientError == ClientError, C.Options.ClientError == ClientError
+		where C.ClientError == ClientError
 	{
 		for command in commands {
 			commandsByVerb[command.verb] = CommandWrapper(command)

	public let usage: () -> CommandantError<ClientError>?

	/// Creates a command that wraps another.
	fileprivate init<C: CommandProtocol>(_ command: C) where C.ClientError == ClientError, C.Options.ClientError == ClientError {
		verb = command.verb
		function = command.function
		run = { (arguments: ArgumentParser) -> Result<(), CommandantError<ClientError>> in

	/// The command's options type.
	associatedtype Options: OptionsProtocol

	associatedtype ClientError where ClientError == Options.ClientError
	
	/// The action that users should specify to use this subcommand (e.g.,
	/// `help`).
