code: def v_reference_choice(ctx, stmt):
      
      d = stmt.search_one('default')
      if d is not None:
          m = stmt.search_one('mandatory')
          if m is not None and m.arg == 'true':
              err_add(ctx.errors, stmt.pos, 'DEFAULT_AND_MANDATORY', ())
          ptr = attrsearch(d.arg, 'arg', stmt.i_children)
          if ptr is None:
              err_add(ctx.errors, d.pos, 'DEFAULT_CASE_NOT_FOUND', d.arg)
          else:
              # make sure there are no mandatory nodes in the default case
              def chk_no_defaults(s):
                  for c in s.i_children:
                      if c.keyword in ('leaf', 'choice'):
                          m = c.search_one('mandatory')
                          if m is not None and m.arg == 'true':
                              err_add(ctx.errors, c.pos,
                                      'MANDATORY_NODE_IN_DEFAULT_CASE', ())
                      elif c.keyword in ('list', 'leaf-list'):
                          m = c.search_one('min-elements')
                          if m is not None and int(m.arg) > 0:
                              err_add(ctx.errors, c.pos,
                                      'MANDATORY_NODE_IN_DEFAULT_CASE', ())
                      elif c.keyword == 'container':
                          p = c.search_one('presence')
                          if p == None or p.arg == 'false':
                              chk_no_defaults(c)
              chk_no_defaults(ptr)
docs: Make sure that the default case exists