y: int32; outer (x :: int32) -> int32 { i :: int32; inner [T < fish] (x :: T) -> fn (int32) -> fn (int32) -> int32 { inner_inner (y :: int32) -> fn (int32) -> int32 { if (y > 1000) return inner (y - 100); else return y; } return inner_inner; } return inner (x + 200); } sort [T < Object] (a: array[T]) { i: int32; for (i = 0; i < a.length; ++i) { a[i]; } } class list [T] { struct item { element1: T; element2: T; element3: T; element4: T; element5: T; next: item; } class iterator { } } print outer (1000);