anchor.diff:                                    "    required string s = 1;",
                                     "}"]),
                 Defs = parse_to_proto_defs(DefsTxt),
  -              {ok, Code} = compile_msg_defs(M, DefsTxt, TmpDir,
  -                                            [strings_as_binaries]),
  -              with_tmpcode(
  -                M, Code,
  +              {ok, Code} = compile_nif_msg_defs(M, DefsTxt, TmpDir,
  +                                                [strings_as_binaries]),
  +              in_separate_vm(
  +                TmpDir, M, Code,
                   fun() ->
                           OrigMsgB = {ntest2,<<"abc">>},
                           OrigMsgS = {ntest2,"abc"}, %% gpb doesn't can't strbin
  
positive.code:       fun(TmpDir) ->
                NEDM = gpb_nif_test_ed1,
                Defs = mk_one_msg_field_of_each_type(),
                {ok, Code} = compile_msg_defs(NEDM, Defs, TmpDir),
                with_tmpcode(
                  NEDM, Code,
                  fun() ->
                          nif_encode_decode_test_it(NEDM, Defs),
                          nif_encode_decode_strings(NEDM, Defs),
  
negative.code:       end).
  
  
  compile_nif_msg_defs(M, MsgDefsOrIoList, TmpDir) ->
      compile_nif_msg_defs(M, MsgDefsOrIoList, TmpDir, []).
  
  compile_nif_msg_defs(M, MsgDefsOrIoList, TmpDir, Opts) ->
      {MsgDefs, ProtoTxt} =
          case is_iolist(MsgDefsOrIoList) of
              true -> {parse_to_proto_defs(MsgDefsOrIoList,Opts), MsgDefsOrIoList};
  