internal void AddReturnTypes(Node node, AnalysisUnit unit, IAnalysisSet types, bool enqueue = true)
        {
            if (IsOriginalClosureScope(OuterScope))
            {
                // Do not add return types to original scope of closure functions
                return;
            }

            if (types?.Any() != true)
            {
                return;
            }
            if (Coroutine != null)
            {
                Coroutine.AddReturn(node, unit, types, enqueue);
            }
            else if (Generator != null)
            {
                Generator.AddReturn(node, unit, types, enqueue);
            }
            else
            {
                ReturnValue.MakeUnionStrongerIfMoreThan(unit.State.Limits.ReturnTypes, types);
                ReturnValue.AddTypes(unit, types, enqueue);
            }
        }