anchor.diff:      nif_tests_check_prerequisites(
         [{"Nif compiles", fun nif_compiles/0},
          {"Nif encode decode", fun nif_encode_decode/0},
  +       nif_encode_decode_oneof_(),
          nif_encode_decode_maps_(),
          {"Nif enums in msgs", fun nif_enum_in_msg/0},
          {"Nif enums with pkgs", fun nif_enum_with_pkgs/0},
  
positive.code:     TopMsgDef1 = {{msg, topmsg1}, mk_fields_of_type(EachType, required)},
      TopMsgDef2 = {{msg, topmsg2}, mk_fields_of_type(EachType, repeated)},
      TopMsgDef3 = {{msg, topmsg3}, mk_fields_of_type(EachType, optional)},
      OneofMsg1  = {{msg, oneof1},  mk_oneof_fields_of_type(EachType, 1)},
      StringMsg = {{msg,strmsg}, mk_fields_of_type([string], required)},
      [EnumDef, SubMsgDef, TopMsgDef1, TopMsgDef2, TopMsgDef3, StringMsg] ++
       [OneofMsg1 || check_protoc_can_do_oneof()].
  
  mk_one_map_field_of_each_type() ->
      %% Reduced set of int types to shorten compilation times,
  
negative.code:                           ?assertEqual(OrigMsg, MGDecoded)
                    end,
                    CodePoints).
  
  nif_encode_decode_oneof() ->
      with_tmpdir(
        fun(TmpDir) ->
                NEDM = gpb_nif_test_ed_oneof1,
                Defs = mk_one_oneof_field_of_each_type(),
                {ok, Code} = compile_nif_msg_defs(NEDM, Defs, TmpDir),
                in_separate_vm(
                  TmpDir, NEDM, Code,
                  fun() ->
                          nif_encode_decode_oneof(NEDM, Defs),
                          ok
                  end)
        end).
  
  
  nif_encode_decode_oneof(NEDM, Defs) ->
      [#gpb_oneof{fields=OFields}] = [O || {{msg, oneof1}, [O]} <- Defs],
  