code: func handleExtensionsValidationDidStart(p *Params) ([]gqlerrors.FormattedError, validationFinishFuncHandler) {
  	fs := map[string]ValidationFinishFunc{}
  	errs := gqlerrors.FormattedErrors{}
  	for _, ext := range p.Schema.extensions {
  		var (
  			ctx      context.Context
  			finishFn ValidationFinishFunc
  		)
  		// catch panic from an extension's validationDidStart function
  		func() {
  			defer func() {
  				if r := recover(); r != nil {
  					errs = append(errs, gqlerrors.FormatError(fmt.Errorf("%s.ValidationDidStart: %v", ext.Name(), r.(error))))
  				}
  			}()
  			ctx, finishFn = ext.ValidationDidStart(p.Context)
  			// update context
  			p.Context = ctx
  			fs[ext.Name()] = finishFn
  		}()
  	}
  	return errs, func(errs []gqlerrors.FormattedError) []gqlerrors.FormattedError {
  		extErrs := gqlerrors.FormattedErrors{}
  		for name, finishFn := range fs {
  			func() {
  				// catch panic from a finishFn
  				defer func() {
  					if r := recover(); r != nil {
  						extErrs = append(extErrs, gqlerrors.FormatError(fmt.Errorf("%s.ValidationFinishFunc: %v", name, r.(error))))
  					}
  				}()
  				finishFn(errs)
  			}()
  		}
  		return extErrs
  	}
  }
docs: // handleExtensionsValidationDidStart notifies the extensions about the start of the validation process