Generic в Kotlin

Добрый день! Я только начинаю изучать Kotlin, да и программирование в принципе. Помоги пожалуйста разобраться в следующем вопросе:
У меня в синглтоне есть два списка:

private var noteList = mutableListOf<Note>()
private var noteComment = mutableListOf<Comment>()

для добавления данных в эти списки я создаю параметризированную функцию:

fun <T : Identifiable> add (obj:  T): MutableList<T> {
        var objList = mutableListOf<T>()
        objList.add(obj)
        return objList
    }

Вопрос в следующем: я не понимаю как мне присвоить результат работы функции либо в список noteList, либо в список noteComment.
Помоги пожалуйста!!!Код

Мне кажется, что код в топикстартовом сообщении не был отформатирован при помощи markdown как код, поэтому символы “больше” и “меньше” съелись и не видны, из-за этого ничего непонятно.

Параметры функций и параметры шаблонов - это разные сущности. Для того, чтобы их записывать в тексте программы используется разный синтаксис. Определение функции записано неправильно, T - это тип параметра функции с именем Obj. А надо параметризировать саму функцию, это другое.

fun <T> add(obj: T): MutableList<T> {
    // ...
}

Если что, я Kotlin не знаю.

Да, наверное не отформатирован, это мое первое сообщение, сейчас поищу как исправить

думаю что функция должна принимать не obj: T, а

fun <T : Identifiable> add (id: Int, list: List<T>): MutableList<T> {
        var objList = mutableListOf<T>()
        objList.add(obj)
        return objList
    }

для того чтобы была возможность проверить есть в уже существующих списках

private var noteList = mutableListOf<Note>()
private var noteComment = mutableListOf<Comment>()

элементы с таким id и если есть то выбрасывать исключение

Что функция должна делать?

Если функция должна принять объект как параметр функции, и затем поместить этот объект в один из двух списков, то для этого не обязательно (не нужно) создавать внутри функции третий список.

Функция должна добавить объект в список. При создании функции я не знаю как объект будет добавляться, соответственно не могу сказать в какой список нужно его добавить.
Моя логика была такая: создаю новый список в теле функции куда добавляю объект, и потом этот список как результат работы функции добавляю в тот или иной список ( в зависимости от того какой объект)

Можно это всё без шаблонов сделать. Определить тип объекта можно через RTTI, рефлексию, или как там это в котлине называется, и затем условием (или оператором switch) поместить куда надо.

when (obj) {
    is Note -> noteList.Add(obj)
    is Comment -> commentList.Add(obj)
}

В некоторых языках существует “специализация функций” (или классов), вдруг она в котлине есть? Тогда под один шаблон попробовать написать две разных специализации, каждая из которых будет помещать в свой список.
Но зачем это всё - пока непонятно.