How to find the index of a group when using GetMultiple and GroupSelect

Hello, Forum members! I’m always learning a lot from you.

I have one question.
When I create a plugin in Rhino, I would like to get not only the closed curves, but also the curves inside the group.

var go = new GetObject();
go.SetCommandPrompt("Select Closed Curves.");
go.GeometryFilter = ObjectType.Curve;
Go.GeometryAttributeFilter = GeometryAttributeFilter.ClosedCurve;
Go.GroupSelect = true;

I use go.GetMultiple method to select the closed curve, including the one in the group.

I can then convert it to curves and use it for modeling, but is there any way to get the index of groups it belonged to?

After importing, the format is of type ObjRef. Is it possible to get it from here?

Below is a test program to get curves from Group and a video of it in action.

protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            //  == Select Multiple Curves  ===============================

            var have_preselected_objects = false;

            var go = new GetObject();
            go.SetCommandPrompt("Select Closed Curves.");
            go.GeometryFilter = ObjectType.Curve;
            go.GeometryAttributeFilter = GeometryAttributeFilter.ClosedCurve;
            go.GroupSelect = true;
            go.SubObjectSelect = false;

            //  CurveList

            var curves = new List<Curve>();

            while (true)
            {
                go.GetMultiple(1, 0);

                if (go.CommandResult() != Result.Success)
                      
                     return go.CommandResult();

                    if (go.ObjectsWerePreselected)
                    {
                        have_preselected_objects = true;
                        go.EnablePreSelect(false, true);
                        go.AlreadySelectedObjectSelect = true;
                        go.EnableClearObjectsOnEntry(false);
                        go.DeselectAllBeforePostSelect = false;
                        go.EnableUnselectObjectsOnExit(false);
                        continue;
                    }

                break;
            }

            for (var i = 0; i < go.ObjectCount; i++)
            {
                // Show object type.
                RhinoApp.WriteLine(go.Object(i).GetType().ToString());

                curves.Add(go.Object(i).Curve());
            }

            // == Testprogram ==============================

            var offsets = new List<Curve>();

            foreach (var crv in curves)
            {
                var crv2 = crv.DuplicateCurve();
                crv2.Translate(0, 0, 10);
                offsets.Add(crv2.Offset(Plane.WorldXY, -3, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.Sharp)[0]);
            }


            var lofts = new List<Brep>();
            for (int i = 0; i < offsets.Count; i++)
            {
                lofts.Add(Brep.CreateFromLoft(new List<Curve> { offsets[i], curves[i] }, Point3d.Unset, Point3d.Unset, LoftType.Straight, false)[0]);
            }


            foreach (var loft in lofts)
            {
                doc.Objects.Add(loft);
            }

            doc.Views.Redraw();
            return Result.Success;
        }

Thank you very much for your help.