protected override void Configure(IObjectTypeDescriptor <ContestComboDetail> descriptor) { descriptor.Field(x => x.UseBefore) .Description("A list of moves to use before this move.") .Type <ListType <MoveType> >() .Resolver((ctx, token) => { var resolver = ctx.Service <MoveResolver>(); return(MonadMaybe.Lift(ctx.Parent <ContestComboDetail>()) .Select(x => x.UseBefore) .Select(moves => moves.Select(move => resolver.GetMoveAsync(move.Name, token))) .Match(Task.WhenAll, Task.FromResult <Move[]>(default)));