code: func parentCancelCtx(parent Context) (*cancelCtx, bool) {
  	for {
  		switch c := parent.(type) {
  		case *cancelCtx:
  			return c, true
  		case *timerCtx:
  			return &c.cancelCtx, true
  		case *valueCtx:
  			parent = c.Context
  		default:
  			return nil, false
  		}
  	}
  }
docs: // parentCancelCtx follows a chain of parent references until it finds a
  // *cancelCtx.  This function understands how each of the concrete types in this
  // package represents its parent.