code: public static Expression concatChunksForceString(List<? extends Expression> chunks) {
      if (!chunks.isEmpty()
          && chunks.get(0).isRepresentableAsSingleExpression()
          && JsExprUtils.isStringLiteral(
              chunks.get(0).assertExprAndCollectRequires(RequiresCollector.NULL))) {
        return concatChunks(chunks);
      } else if (chunks.size() > 1
          && chunks.get(1).isRepresentableAsSingleExpression()
          && JsExprUtils.isStringLiteral(
              chunks.get(1).assertExprAndCollectRequires(RequiresCollector.NULL))) {
        return concatChunks(chunks);
      } else {
        return concatChunks(
            ImmutableList.of(LITERAL_EMPTY_STRING, Group.create(concatChunks(chunks))));
      }
    }
docs: Builds a {@link Expression} that represents the concatenation of the given code chunks. This
  doesn't assume the values represented by the inputs are necessarily strings, but guarantees
  that the value represented by the output is a string.