src/language-js/print/assignment.js/isCallExpressionWithComplexTypeArguments
function isCallExpressionWithComplexTypeArguments(node, print) {
  const typeArgs = getTypeArgumentsFromCallExpression(node);
  if (isNonEmptyArray(typeArgs)) {
    if (typeArgs.length > 1) {
      return true;
    }
    if (typeArgs.length === 1) {
      const firstArg = typeArgs[0];
      if (
        firstArg.type === "TSUnionType" ||
        firstArg.type === "UnionTypeAnnotation" ||
        firstArg.type === "TSIntersectionType" ||
        firstArg.type === "IntersectionTypeAnnotation" ||
        firstArg.type === "TSTypeLiteral" ||
        firstArg.type === "ObjectTypeAnnotation"
      ) {
        return true;
      }
    }
    const typeArgsKeyName = node.typeParameters
      ? "typeParameters"
      : "typeArguments";
    if (willBreak(print(typeArgsKeyName))) {
      return true;
    }
  }
  return false;
}