function Flatten(lst: List): List; begin Result := new List; foreach var x in lst do if x is List then Result.Addrange(Flatten(x as List)) else Result.Add(x) end; function LstObj(params a: array of object): List := new List(a); begin var lst := LstObj(1,LstObj(2, LstObj(3,4), LstObj(5,6)), LstObj(LstObj(7,8), 9)); Println(lst); Println(Flatten(lst)); end.