code: func newContext(c *cli.Context) (ctx *Context, err error) {
  	ctx = &Context{
  		Context: c,
  		netCtx:  context.Background(),
  	}
  
  	ctx.reporter, err = newReporter(ctx)
  	if err != nil {
  		return
  	}
  
  	ctx.logger, err = newLogger(ctx)
  	if err != nil {
  		return
  	}
  
  	ctx.stats, err = newStats(ctx)
  	if err != nil {
  		return
  	}
  
  	ctx.netCtx = ctx.embed(ctx.netCtx)
  
  	return
  }
docs: // newContext builds a new base Context object.