Parent with N-Childs where each child can have N-Childs
It's not strange at all. It's just a tree, or graph, which is very common.

You don't even need two methods: a single one is sufficient.  You should define a single recursive method that takes in a list (or some other collection) of id's and returns those id's and all their  children and grand-children, etc.  If you want the children of a single element instead of a list of id's, you can just pass a list of one element (or define a method that does that).

Actually, it might be better to use a set instead of list of id's as the argument to the method since it would then handle duplicates and circular references.  ALso, if you use a list instead, you would have to specify in the documentation what the ordering of the returned list means.