Why WorkflowClient.start is static but signalWithStart is not

If it is because the batchRequest is generated by the instance method newSignalWithStartRequest, then the question simply changes to why that is not a static method but an instance method?

Our code ended up having 2 patterns in them due to this

OrderWorkflow orderWorkflow = client.newWorkflowStub(OrderWorkflow.class, options);
WorkflowClient.start(orderWorkflow::start, orderId);

OrderWorkflow orderWorkflow = client.newWorkflowStub(OrderWorkflow.class, options);
BatchRequest batchRequest = client.newSignalWithStartRequest();
batchRequest.add(orderWorkflow::start, orderId);
batchRequest.add(orderWorkflow::updateStatus, status);
client.signalWithStart(batchRequest);

Why aren’t they unified?

// Why not like this?
WorkflowClient.start(orderWorkflow::start, orderId);
WorkflowClient.signalWithStart(batchRequest);

// Or why not like this
client.start(orderWorkflow::start, orderId);
client.signalWithStart(batchRequest);

You are right. There is no reason for signalWithStart to be non-static. Unfortunately changing it to another signature would be a breaking change, so we have to keep it as it is.