private IGremlinQueryBase Create() { var startQuery = Volatile.Read(ref _startQuery); if (startQuery != null) { return(startQuery); } IGremlinQueryBase ret = GremlinQuery.Create <object>(Environment); if (!ExcludedStrategyTypes.IsEmpty) { ret = ret.AddStep(new WithoutStrategiesStep(ExcludedStrategyTypes.ToArray())); } foreach (var strategy in IncludedStrategies) { ret = strategy.Apply(ret); } return(Interlocked.CompareExchange(ref _startQuery, ret, null) ?? ret); }
IGremlinQuerySource IGremlinQuerySource.RemoveStrategies(params Type[] strategyTypes) { return(new GremlinQuerySourceImpl(Environment, IncludedStrategies, ExcludedStrategyTypes.AddRange(strategyTypes))); }