diff --git a/src/version.c b/src/version.c
index bbb2157..90b35d3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3865,
+/**/
     3864,
 /**/
     3863,
diff --git a/src/vim9.h b/src/vim9.h
index 8a243ba..a79ffb5 100644
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -112,7 +112,7 @@
     // loop
     ISN_FOR,	    // get next item from a list, uses isn_arg.forloop
 
-    ISN_TRY,	    // add entry to ec_trystack, uses isn_arg.try
+    ISN_TRY,	    // add entry to ec_trystack, uses isn_arg.tryref
     ISN_THROW,	    // pop value of stack, store in v:exception
     ISN_PUSHEXC,    // push v:exception
     ISN_CATCH,	    // drop v:exception
@@ -429,7 +429,7 @@
 	jump_T		    jump;
 	jumparg_T	    jumparg;
 	forloop_T	    forloop;
-	try_T		    try;
+	try_T		    tryref;
 	trycont_T	    trycont;
 	cbfunc_T	    bfunc;
 	cdfunc_T	    dfunc;
diff --git a/src/vim9cmds.c b/src/vim9cmds.c
index fe9ead2..6d8935a 100644
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -1290,8 +1290,8 @@
 	try_scope->se_u.se_try.ts_try_label = instr->ga_len;
 	if ((isn = generate_instr(cctx, ISN_TRY)) == NULL)
 	    return NULL;
-	isn->isn_arg.try.try_ref = ALLOC_CLEAR_ONE(tryref_T);
-	if (isn->isn_arg.try.try_ref == NULL)
+	isn->isn_arg.tryref.try_ref = ALLOC_CLEAR_ONE(tryref_T);
+	if (isn->isn_arg.tryref.try_ref == NULL)
 	    return NULL;
     }
 
@@ -1352,8 +1352,8 @@
 
 	// End :try or :catch scope: set value in ISN_TRY instruction
 	isn = ((isn_T *)instr->ga_data) + scope->se_u.se_try.ts_try_label;
-	if (isn->isn_arg.try.try_ref->try_catch == 0)
-	    isn->isn_arg.try.try_ref->try_catch = instr->ga_len;
+	if (isn->isn_arg.tryref.try_ref->try_catch == 0)
+	    isn->isn_arg.tryref.try_ref->try_catch = instr->ga_len;
 	if (scope->se_u.se_try.ts_catch_label != 0)
 	{
 	    // Previous catch without match jumps here
@@ -1452,7 +1452,7 @@
     {
 	// End :catch or :finally scope: set value in ISN_TRY instruction
 	isn = ((isn_T *)instr->ga_data) + scope->se_u.se_try.ts_try_label;
-	if (isn->isn_arg.try.try_ref->try_finally != 0)
+	if (isn->isn_arg.tryref.try_ref->try_finally != 0)
 	{
 	    emsg(_(e_finally_dup));
 	    return NULL;
@@ -1479,9 +1479,9 @@
 							     this_instr, cctx);
 
 	// If there is no :catch then an exception jumps to :finally.
-	if (isn->isn_arg.try.try_ref->try_catch == 0)
-	    isn->isn_arg.try.try_ref->try_catch = this_instr;
-	isn->isn_arg.try.try_ref->try_finally = this_instr;
+	if (isn->isn_arg.tryref.try_ref->try_catch == 0)
+	    isn->isn_arg.tryref.try_ref->try_catch = this_instr;
+	isn->isn_arg.tryref.try_ref->try_finally = this_instr;
 	if (scope->se_u.se_try.ts_catch_label != 0)
 	{
 	    // Previous catch without match jumps here
@@ -1528,8 +1528,8 @@
     try_isn = ((isn_T *)instr->ga_data) + scope->se_u.se_try.ts_try_label;
     if (cctx->ctx_skip != SKIP_YES)
     {
-	if (try_isn->isn_arg.try.try_ref->try_catch == 0
-				      && try_isn->isn_arg.try.try_ref->try_finally == 0)
+	if (try_isn->isn_arg.tryref.try_ref->try_catch == 0
+			  && try_isn->isn_arg.tryref.try_ref->try_finally == 0)
 	{
 	    emsg(_(e_missing_catch_or_finally));
 	    return NULL;
@@ -1564,7 +1564,7 @@
     {
 	// End :catch or :finally scope: set instruction index in ISN_TRY
 	// instruction
-	try_isn->isn_arg.try.try_ref->try_endtry = instr->ga_len;
+	try_isn->isn_arg.tryref.try_ref->try_endtry = instr->ga_len;
 	if (cctx->ctx_skip != SKIP_YES
 				   && generate_instr(cctx, ISN_ENDTRY) == NULL)
 	    return NULL;
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 43b7e6f..7485112 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3517,11 +3517,11 @@
 		    trycmd->tcd_frame_idx = ectx->ec_frame_idx;
 		    trycmd->tcd_stack_len = ectx->ec_stack.ga_len;
 		    trycmd->tcd_catch_idx =
-					  iptr->isn_arg.try.try_ref->try_catch;
+				       iptr->isn_arg.tryref.try_ref->try_catch;
 		    trycmd->tcd_finally_idx =
-					iptr->isn_arg.try.try_ref->try_finally;
+				     iptr->isn_arg.tryref.try_ref->try_finally;
 		    trycmd->tcd_endtry_idx =
-					 iptr->isn_arg.try.try_ref->try_endtry;
+				      iptr->isn_arg.tryref.try_ref->try_endtry;
 		}
 		break;
 
@@ -5670,7 +5670,7 @@
 
 	    case ISN_TRY:
 		{
-		    try_T *try = &iptr->isn_arg.try;
+		    try_T *try = &iptr->isn_arg.tryref;
 
 		    if (try->try_ref->try_finally == 0)
 			smsg("%s%4d TRY catch -> %d, endtry -> %d",
diff --git a/src/vim9instr.c b/src/vim9instr.c
index d82efe9..48c90dc 100644
--- a/src/vim9instr.c
+++ b/src/vim9instr.c
@@ -2088,7 +2088,7 @@
 	    break;
 
 	case ISN_TRY:
-	    vim_free(isn->isn_arg.try.try_ref);
+	    vim_free(isn->isn_arg.tryref.try_ref);
 	    break;
 
 	case ISN_CEXPR_CORE:
