function assertCallBlockStructure(
  callBlock,
  args = [],
  varIds = [],
  name = undefined,
) {
  if (args.length) {
    assert.include(callBlock.toString(), 'with');
  } else {
    assert.notInclude(callBlock.toString(), 'with');
  }

  assertCallBlockArgsStructure(callBlock, args);
  assertBlockVarModels(callBlock, varIds);
  if (name !== undefined) {
    assert.equal(callBlock.getFieldValue('NAME'), name);
  }
}
Asserts that the procedure call block has the expected inputs and
   fields.
@param {!Blockly.Block} callBlock The procedure call block.
@param {Array<string>=} args An array of argument names.
@param {Array<string>=} varIds An array of variable ids.
@param {string=} name The name we expect the caller to have.