function printArrowFunctionSignatures(
  path,
  args,
  { signatureDocs, shouldBreak },
) {
  if (signatureDocs.length === 1) {
    return signatureDocs[0];
  }

  const { parent, key } = path;
  if (
    (key !== "callee" && isCallLikeExpression(parent)) ||
    isBinaryish(parent)
  ) {
    return group(
      [
        signatureDocs[0],
        " =>",
        indent([line, join([" =>", line], signatureDocs.slice(1))]),
      ],
      { shouldBreak },
    );
  }

  if (
    (key === "callee" && isCallLikeExpression(parent)) ||
    // isAssignmentRhs
    args.assignmentLayout
  ) {
    return group(join([" =>", line], signatureDocs), { shouldBreak });
  }

  return group(indent(join([" =>", line], signatureDocs)), { shouldBreak });
}
@param {AstPath} path
@param {*} args
@param {Object} arrowFunctionSignaturesPrintOptions
@param {Doc[]} arrowFunctionSignaturesPrintOptions.signatureDocs
@param {boolean} arrowFunctionSignaturesPrintOptions.shouldBreak
@returns {Doc}