In the original design, the FindOperation, GetMoreOperation, and KillCursorsOperation each handled legacy versions of themselves directly. With the switch to driver.Operation those types won't know the wire version before calling driver.Operation.Execute so driver.Operation.Execute must handle these legacy conversions itself. There is a small overhead of transforming the command into a bsoncore.Document and then building a wire message directly. If this is a performance issue we can revisit the design of this later.
The required signaling type, LegacyOperationKind, and the necessary constants will be created during