anchor.diff:                  | None -> asyncVal { return ResolverError { Name = name; Message = ctx.Schema.ParseError (GraphQLException (sprintf "GraphQL Interface '%s' is not implemented by the type '%s'" idef.Name resolvedDef.Name)); PathToOrigin = [] } }
               | None ->
                   if ctx.ExecutionInfo.IsNullable
  -                then asyncVal { return ResolverObjectNode { Name = name; Value = None; DeferredValue = value; Children = [| |] } }
  +                then asyncVal { return ResolverObjectNode { Name = name; Value = None; Children = [| |] } }
                   else nullResolverError name
           | Union udef ->
               let possibleTypesFn = ctx.Schema.GetPossibleTypes
  
positive.code:                 match List.tail (removeDuplicatedIndexes path), tree' with
                  | [], t ->
                      asyncVal {
                          let! res = buildResolverTree d.Info.ReturnDef fieldCtx fieldExecuteMap t.DeferredValue
                          match d.Info.Kind with
                          | SelectFields [f] -> return! async { return [|res, List.rev (f.Identifier :> obj :: pathAcc)|] }
                          | _ -> return! async { return [|res, List.rev ((List.head path)::pathAcc)|] }
                      }
                  | [String p], t ->
                      asyncVal {
                          let! res = buildResolverTree d.Info.ReturnDef fieldCtx fieldExecuteMap t.DeferredValue
                          match res with
                          | ResolverError _ -> return! async { return [||] }
                          | _ -> return! async { return [|res, List.rev((p :> obj)::pathAcc)|] }
                      }
                  | ([p; String "__index"] | [p]), t ->
                      asyncVal {
                          let! res = buildResolverTree d.Info.ReturnDef fieldCtx fieldExecuteMap t.DeferredValue
                          return! async { return [|res, List.rev(p::pathAcc)|] }
                      }
                  | [head'; String "__index"; head; String "__index"] as p, ResolverObjectNode n ->
  
negative.code:         | ResolverError _ -> None
          | ResolverObjectNode node -> node.Value
          | ResolverListNode l -> l.Value
  and ResolverLeaf = { Name: string; Value: obj option }
  and ResolverError = { Name: string; Message: string; PathToOrigin: obj list; }
  and ResolverNode = { Name: string; Value: obj option; Children: ResolverTree []; }
  
  module ResolverTree =
      let fold leafOp errorOp nodeOp listOp =
  