code: func (h HelperContext) BlockWith(ctx *Context) (string, error) {
  	nev := newEvalVisitor(h.evalVisitor.template, ctx)
  	nev.blockParams = h.evalVisitor.blockParams
  	dd := nev.VisitProgram(h.evalVisitor.curBlock.Program)
  	switch tp := dd.(type) {
  	case string:
  		return tp, nil
  	case error:
  		return "", errors.WithStack(tp)
  	case nil:
  		return "", nil
  	default:
  		return "", errors.WithStack(errors.Errorf("unknown return value %T %+v", dd, dd))
  	}
  }
docs: // BlockWith executes the block of template associated with
  // the helper, think the block inside of an "if" or "each"
  // statement. It takes a new context with which to evaluate
  // the block.