diff --git a/src/testdir/test_method.vim b/src/testdir/test_method.vim
index 84d6c6c..7c0559a 100644
--- a/src/testdir/test_method.vim
+++ b/src/testdir/test_method.vim
@@ -152,6 +152,22 @@
 
 func Test_method_not_supported()
   call assert_fails('eval 123->changenr()', 'E276:')
+  call assert_fails('echo "abc"->invalidfunc()', 'E117:')
+  " Test for too many or too few arguments to a method
+  call assert_fails('let n="abc"->len(2)', 'E118:')
+  call assert_fails('let n=10->setwinvar()', 'E119:')
 endfunc
 
-" vim: shiftwidth=2 sts=2 expandtab
+" Test for passing optional arguments to methods
+func Test_method_args()
+  let v:errors = []
+  let n = 10->assert_inrange(1, 5, "Test_assert_inrange")
+  if v:errors[0] !~ 'Test_assert_inrange'
+    call assert_report(v:errors[0])
+  else
+    " Test passed
+    let v:errors = []
+  endif
+endfunc
+
+" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/testdir/test_restricted.vim b/src/testdir/test_restricted.vim
index a29f7c3..46f5e76 100644
--- a/src/testdir/test_restricted.vim
+++ b/src/testdir/test_restricted.vim
@@ -7,97 +7,103 @@
 "  finish
 "endif
 
-func Test_restricted()
-  call Run_restricted_test('!ls', 'E145:')
-endfunc
+func Test_restricted_mode()
+  let lines =<< trim END
+    if has('lua')
+      call assert_fails('lua print("Hello, Vim!")', 'E981:')
+      call assert_fails('luado return "hello"', 'E981:')
+      call assert_fails('luafile somefile', 'E981:')
+      call assert_fails('call luaeval("expression")', 'E145:')
+    endif
 
-func Run_restricted_test(ex_cmd, error)
-  let cmd = GetVimCommand('Xrestricted')
-  if cmd == ''
-    return
+    if has('mzscheme')
+      call assert_fails('mzscheme statement', 'E981:')
+      call assert_fails('mzfile somefile', 'E981:')
+      call assert_fails('call mzeval("expression")', 'E145:')
+    endif
+
+    if has('perl')
+      " TODO: how to make Safe mode fail?
+      " call assert_fails('perl system("ls")', 'E981:')
+      " call assert_fails('perldo system("hello")', 'E981:')
+      " call assert_fails('perlfile somefile', 'E981:')
+      " call assert_fails('call perleval("system(\"ls\")")', 'E145:')
+    endif
+
+    if has('python')
+      call assert_fails('python print "hello"', 'E981:')
+      call assert_fails('pydo return "hello"', 'E981:')
+      call assert_fails('pyfile somefile', 'E981:')
+      call assert_fails('call pyeval("expression")', 'E145:')
+    endif
+
+    if has('python3')
+      call assert_fails('py3 print "hello"', 'E981:')
+      call assert_fails('py3do return "hello"', 'E981:')
+      call assert_fails('py3file somefile', 'E981:')
+      call assert_fails('call py3eval("expression")', 'E145:')
+    endif
+
+    if has('ruby')
+      call assert_fails('ruby print "Hello"', 'E981:')
+      call assert_fails('rubydo print "Hello"', 'E981:')
+      call assert_fails('rubyfile somefile', 'E981:')
+    endif
+
+    if has('tcl')
+      call assert_fails('tcl puts "Hello"', 'E981:')
+      call assert_fails('tcldo puts "Hello"', 'E981:')
+      call assert_fails('tclfile somefile', 'E981:')
+    endif
+
+    if has('clientserver')
+      call assert_fails('let s=remote_peek(10)', 'E145:')
+      call assert_fails('let s=remote_read(10)', 'E145:')
+      call assert_fails('let s=remote_send("vim", "abc")', 'E145:')
+      call assert_fails('let s=server2client(10, "abc")', 'E145:')
+    endif
+
+    if has('terminal')
+      call assert_fails('terminal', 'E145:')
+      call assert_fails('call term_start("vim")', 'E145:')
+      call assert_fails('call term_dumpwrite(1, "Xfile")', 'E145:')
+    endif
+
+    if has('channel')
+      call assert_fails("call ch_logfile('Xlog')", 'E145:')
+      call assert_fails("call ch_open('localhost:8765')", 'E145:')
+    endif
+
+    if has('job')
+      call assert_fails("call job_start('vim')", 'E145:')
+    endif
+
+    if has('libcall')
+      call assert_fails("echo libcall('libc.so', 'getenv', 'HOME')", 'E145:')
+    endif
+    call assert_fails("call rename('a', 'b')", 'E145:')
+    call assert_fails("call delete('Xfile')", 'E145:')
+    call assert_fails("call mkdir('Xdir')", 'E145:')
+    call assert_fails('!ls', 'E145:')
+    call assert_fails('shell', 'E145:')
+    call assert_fails('stop', 'E145:')
+    call assert_fails('suspend', 'E145:')
+    call assert_fails('call system("vim")', 'E145:')
+    call assert_fails('call systemlist("vim")', 'E145:')
+    if has('unix')
+      call assert_fails('cd `pwd`', 'E145:')
+    endif
+
+    call writefile(v:errors, 'Xresult')
+    qa!
+  END
+  call writefile(lines, 'Xrestricted')
+  if RunVim([], [], '-Z --clean -S Xrestricted')
+    call assert_equal([], readfile('Xresult'))
   endif
 
-  " Use a VimEnter autocommand to avoid that the error message is displayed in
-  " a dialog with an OK button.
-  call writefile([
-	\ "func Init()",
-	\ "  silent! " . a:ex_cmd,
-	\ "  call writefile([v:errmsg], 'Xrestrout')",
-	\ "  qa!",
-	\ "endfunc",
-	\ "au VimEnter * call Init()",
-	\ ], 'Xrestricted')
-  call system(cmd . ' -Z')
-  call assert_match(a:error, join(readfile('Xrestrout')))
-
   call delete('Xrestricted')
-  call delete('Xrestrout')
+  call delete('Xresult')
 endfunc
 
-func Test_restricted_lua()
-  if !has('lua')
-    throw 'Skipped: Lua is not supported'
-  endif
-  call Run_restricted_test('lua print("Hello, Vim!")', 'E981:')
-  call Run_restricted_test('luado return "hello"', 'E981:')
-  call Run_restricted_test('luafile somefile', 'E981:')
-  call Run_restricted_test('call luaeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_mzscheme()
-  if !has('mzscheme')
-    throw 'Skipped: MzScheme is not supported'
-  endif
-  call Run_restricted_test('mzscheme statement', 'E981:')
-  call Run_restricted_test('mzfile somefile', 'E981:')
-  call Run_restricted_test('call mzeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_perl()
-  if !has('perl')
-    throw 'Skipped: Perl is not supported'
-  endif
-  " TODO: how to make Safe mode fail?
-  " call Run_restricted_test('perl system("ls")', 'E981:')
-  " call Run_restricted_test('perldo system("hello")', 'E981:')
-  " call Run_restricted_test('perlfile somefile', 'E981:')
-  " call Run_restricted_test('call perleval("system(\"ls\")")', 'E145:')
-endfunc
-
-func Test_restricted_python()
-  if !has('python')
-    throw 'Skipped: Python is not supported'
-  endif
-  call Run_restricted_test('python print "hello"', 'E981:')
-  call Run_restricted_test('pydo return "hello"', 'E981:')
-  call Run_restricted_test('pyfile somefile', 'E981:')
-  call Run_restricted_test('call pyeval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_python3()
-  if !has('python3')
-    throw 'Skipped: Python3 is not supported'
-  endif
-  call Run_restricted_test('py3 print "hello"', 'E981:')
-  call Run_restricted_test('py3do return "hello"', 'E981:')
-  call Run_restricted_test('py3file somefile', 'E981:')
-  call Run_restricted_test('call py3eval("expression")', 'E145:')
-endfunc
-
-func Test_restricted_ruby()
-  if !has('ruby')
-    throw 'Skipped: Ruby is not supported'
-  endif
-  call Run_restricted_test('ruby print "Hello"', 'E981:')
-  call Run_restricted_test('rubydo print "Hello"', 'E981:')
-  call Run_restricted_test('rubyfile somefile', 'E981:')
-endfunc
-
-func Test_restricted_tcl()
-  if !has('tcl')
-    throw 'Skipped: Tcl is not supported'
-  endif
-  call Run_restricted_test('tcl puts "Hello"', 'E981:')
-  call Run_restricted_test('tcldo puts "Hello"', 'E981:')
-  call Run_restricted_test('tclfile somefile', 'E981:')
-endfunc
+" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 9b49e7c..6efb146 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1004,4 +1004,62 @@
   delfunc! Func2
 enddef
 
+" Test for internal functions returning different types
+func Test_InternalFuncRetType()
+  let lines =<< trim END
+    def RetFloat(): float
+      return ceil(1.456)
+    enddef
+
+    def RetListAny(): list<any>
+      return items({'k' : 'v'})
+    enddef
+
+    def RetListString(): list<string>
+      return split('a:b:c', ':')
+    enddef
+
+    def RetListDictAny(): list<dict<any>>
+      return getbufinfo()
+    enddef
+
+    def RetDictNumber(): dict<number>
+      return wordcount()
+    enddef
+
+    def RetDictString(): dict<string>
+      return environ()
+    enddef
+  END
+  call writefile(lines, 'Xscript')
+  source Xscript
+
+  call assert_equal(2.0, RetFloat())
+  call assert_equal([['k', 'v']], RetListAny())
+  call assert_equal(['a', 'b', 'c'], RetListString())
+  call assert_notequal([], RetListDictAny())
+  call assert_notequal({}, RetDictNumber())
+  call assert_notequal({}, RetDictString())
+  call delete('Xscript')
+endfunc
+
+" Test for passing too many or too few arguments to internal functions
+func Test_internalfunc_arg_error()
+  let l =<< trim END
+    def! FArgErr(): float
+      return ceil(1.1, 2)
+    enddef
+  END
+  call writefile(l, 'Xinvalidarg')
+  call assert_fails('so Xinvalidarg', 'E118:')
+  let l =<< trim END
+    def! FArgErr(): float
+      return ceil()
+    enddef
+  END
+  call writefile(l, 'Xinvalidarg')
+  call assert_fails('so Xinvalidarg', 'E119:')
+  call delete('Xinvalidarg')
+endfunc
+
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index 0d7b641..0fecc97 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    450,
+/**/
     449,
 /**/
     448,
