docs: protected FieldValueInfo completeValueForList(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Iterable<Object> iterableValues) {
  
          Collection<Object> values = FpKit.toCollection(iterableValues);
          ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo();
          GraphQLFieldDefinition fieldDef = parameters.getExecutionStepInfo().getFieldDefinition();
          GraphQLObjectType fieldContainer = parameters.getExecutionStepInfo().getFieldContainer();
  
          InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, fieldDef, createExecutionStepInfo(executionContext, parameters, fieldDef, fieldContainer), values);
          Instrumentation instrumentation = executionContext.getInstrumentation();
  
          InstrumentationContext<ExecutionResult> completeListCtx = instrumentation.beginFieldListComplete(
                  instrumentationParams
          );
  
          List<FieldValueInfo> fieldValueInfos = new ArrayList<>();
          int index = 0;
          for (Object item : values) {
              ExecutionPath indexedPath = parameters.getPath().segment(index);
  
              ExecutionStepInfo stepInfoForListElement = executionStepInfoFactory.newExecutionStepInfoForListElement(executionStepInfo, index);
  
              NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, stepInfoForListElement);
  
              int finalIndex = index;
              ExecutionStrategyParameters newParameters = parameters.transform(builder ->
                      builder.executionStepInfo(stepInfoForListElement)
                              .nonNullFieldValidator(nonNullableFieldValidator)
                              .listSize(values.size())
                              .currentListIndex(finalIndex)
                              .path(indexedPath)
                              .source(item)
              );
              fieldValueInfos.add(completeValue(executionContext, newParameters));
              index++;
          }
  
          CompletableFuture<List<ExecutionResult>> resultsFuture = Async.each(fieldValueInfos, (item, i) -> item.getFieldValue());
  
          CompletableFuture<ExecutionResult> overallResult = new CompletableFuture<>();
          completeListCtx.onDispatched(overallResult);
  
          resultsFuture.whenComplete((results, exception) -> {
              if (exception != null) {
                  ExecutionResult executionResult = handleNonNullException(executionContext, overallResult, exception);
                  completeListCtx.onCompleted(executionResult, exception);
                  return;
              }
              List<Object> completedResults = new ArrayList<>();
              for (ExecutionResult completedValue : results) {
                  completedResults.add(completedValue.getData());
              }
              ExecutionResultImpl executionResult = new ExecutionResultImpl(completedResults, null);
              overallResult.complete(executionResult);
          });
          overallResult.whenComplete(completeListCtx::onCompleted);
  
          return FieldValueInfo.newFieldValueInfo(LIST)
                  .fieldValue(overallResult)
                  .fieldValueInfos(fieldValueInfos)
                  .build();
      }