Why is VS Code saying this PHP code doesn't match signatures?

Solution 1:

You are using types in your start_lvl()'s parameters but \Walker_Nav_menu is not.

From the source code

    /**
     * Starts the list before the elements are added.
     *
     * @since 3.0.0
     *
     * @see Walker::start_lvl()
     *
     * @param string   $output Used to append additional content (passed by reference).
     * @param int      $depth  Depth of menu item. Used for padding.
     * @param stdClass $args   An object of wp_nav_menu() arguments.
     */
    public function start_lvl( &$output, $depth = 0, $args = null ) 

You need to remove types from your method's parameters