4a2a77d9b9
Previously, a function reference that used generic parameters from its outer scope was lowered into a top-level non-generic subclass of `FunctionN`, with `FunctionN` type arguments referencing type parameters not present in the scope anymore. This sometimes resulted in generating malformed mangled names. From now on the generated subclass of `FunctionN` is generic. The needed type arguments are passed upon instantiation, when the relevant generic parameters are present in the scope.