internal List <GremlinVariable> GetSideEffectVariables()
        {
            List <GremlinVariable> sideEffectVariables = ParentContext?.GetSideEffectVariables() ?? new List <GremlinVariable>();

            foreach (var variable in VariableList)
            {
                var aggregate = variable as GremlinAggregateVariable;
                if (aggregate != null)
                {
                    sideEffectVariables.Add(variable);
                }

                var store = variable as GremlinStoreVariable;
                if (store != null)
                {
                    sideEffectVariables.Add(variable);
                }

                var treeSideEffect = variable as GremlinTreeSideEffectVariable;
                if (treeSideEffect != null)
                {
                    sideEffectVariables.Add(variable);
                }

                var groupSideEffect = variable as GremlinGroupVariable;
                if (groupSideEffect != null && groupSideEffect.SideEffectKey != null)
                {
                    sideEffectVariables.Add(variable);
                }
            }

            return(sideEffectVariables);
        }