The problem is this line:
\IPS\Http\Url::internal( NULL )
Try this instead:
\IPS\Http\Url::internal( '' )
===
Also, if you're expecting $hiddens to be an array, don't initialize it as an empty string:
function startForm( $hiddens = array(), $name = 'theAdminForm', $js = '', $id = '' )
However, I see no point in starting a form with that function.
Can't you use the \IPS\Helpers\Form class? It does the same and is entirely handled by the framework. 🤨