I'm trying to convert the following reflection into Kotlin. The following uses reflection to call an RFCOMMs function so it can take a port/channel as an input instead of UUID. I have all my program in Kotlin. Anyone know how to write this in Kotlin?
int bt_port_to_connect = 5;
BluetoothDevice device = mDevice;
BluetoothSocket deviceSocket = null;
...
// IMPORTANT: we create a reference to the 'createInsecureRfcommSocket' method
// and not(!) to the 'createInsecureRfcommSocketToServiceRecord' (which is what the 
// android SDK documentation publishes
Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
deviceSocket = (BluetoothSocket) m.invoke(device,bt_port_to_connect);
Updating with recommendation:
class BluetoothClient(device: BluetoothDevice): Thread() {
    // https://stackoverflow.com/questions/9703779/connecting-to-a-specific-bluetooth-port-on-a-bluetooth-device-using-android
    // Need to reflection - create RFCOMM socket to a port number instead of UUID
    // Invoke btdevice as 1st parameter and then the port number
    var bt_port_to_connect = 5
    var deviceSocket: BluetoothSocket? = null
    private val socket = device.createInsecureRfcommSocketToServiceRecord(uuid)
    val m = device::class.declaredFunctions.single { it.name == "createInsecureRfcommSocket" }
    
    m.call(device, bt_port_to_connect)
    override fun run() {
        try {
            Log.i("client", "Connecting")
            this.socket.connect()
            Log.i("client", "Sending")
            val outputStream = this.socket.outputStream
            val inputStream = this.socket.inputStream
            try {
                outputStream.write(message.toByteArray())
                outputStream.flush()
                Log.i("client", "Sent")
            } catch(e: Exception) {
                Log.e("client", "Cannot send", e)
            } finally {
                outputStream.close()
                inputStream.close()
                this.socket.close()
            }
        }
        catch (e: IOException) {
            println("Socket Failed")
        }
    }
}