private static bool TryCompleteOtherListValue( IOperationContext operationContext, MiddlewareContext resolverContext, ISelection selection, Path path, IType fieldType, string responseName, int responseIndex, object?result, List <ResolverTask> bufferedTasks, out object?completedResult) { ResultList resultList = operationContext.Result.RentResultList(); IType elementType = fieldType.InnerType(); resultList.IsNullable = elementType.Kind is not TypeKind.NonNull; var isElementList = elementType.IsListType(); if (result is Array array) { for (var i = 0; i < array.Length; i++) { if (!TryCompleteElement(path.Append(i), array.GetValue(i))) { completedResult = null; return(true); } } completedResult = resultList; return(true); } if (result is IList list) { for (var i = 0; i < list.Count; i++) { if (!TryCompleteElement(path.Append(i), list[i])) { completedResult = null; return(true); } } completedResult = resultList; return(true); } if (result is IEnumerable enumerable) { var index = 0; foreach (var element in enumerable) { if (!TryCompleteElement(path.Append(index++), element)) { completedResult = null; return(true); } } completedResult = resultList; return(true); } ReportError( operationContext, resolverContext, selection, ListValueIsNotSupported(resultList.GetType(), selection.SyntaxNode, path)); completedResult = null; return(false); bool TryCompleteElement(Path elementPath, object?elementResult) { if (TryComplete( operationContext, resolverContext, selection, elementPath, elementType, responseName, responseIndex, elementResult, bufferedTasks, out var completedElement) && completedElement is not null) { resultList.Add(completedElement); if (isElementList) { ((IHasResultDataParent)completedElement).Parent = resultList; } } else if (resultList.IsNullable) { resultList.Add(null); } else { return(false); } return(true); } }