I have a function that handles the generic where the generic is represented by a list or a nested lists structure like this:

```
List<List<int>> = ( (1, 2, 3, 4), (0, 1, 2, 3) )

```

i want to refer to each element of each list and apply some method to it, for example

```
public int Increment(int i)
{ 
    return ++i;
}

public List<T> Run(List<T> items)
{
    return items.AsParallel().Select(item => Increment(item).ToList();
}

```

So, for the "Increment" method, I would like to get a list of lists like i had

```
((1, 2, 3, 4), (0, 1, 2, 3))

```

and get

```
((2, 3, 4, 5), (1, 2, 3, 4))

```

I would like not to depend on the amount of nesting and have one method that goes to the final elements of nested lists