public IGremlinQuerySerializer OverrideFragmentSerializer <TAtom>(QueryFragmentSerializer <TAtom> queryFragmentSerializer)
 {
     return(new GremlinQuerySerializerImpl(
                _dict
                .TryGetValue(typeof(TAtom))
                .Match(
                    existingAtomSerializer => _dict.SetItem(typeof(TAtom), (atom, baseSerializer, recurse) => queryFragmentSerializer((TAtom)atom, _ => existingAtomSerializer(_, baseSerializer, recurse), recurse)),
                    () => _dict.SetItem(typeof(TAtom), (atom, baseSerializer, recurse) => queryFragmentSerializer((TAtom)atom, _ => baseSerializer(_), recurse)))));
 }
 public IGremlinQuerySerializer OverrideFragmentSerializer <TAtom>(QueryFragmentSerializer <TAtom> queryFragmentSerializer)
 {
     return(new SelectGremlinQuerySerializer(_baseSerializer.OverrideFragmentSerializer(queryFragmentSerializer), _projection));
 }
 public IGremlinQuerySerializer OverrideFragmentSerializer <TAtom>(QueryFragmentSerializer <TAtom> queryFragmentSerializer)
 {
     throw new InvalidOperationException($"{nameof(OverrideFragmentSerializer)} must not be called on {nameof(GremlinQuerySerializer)}.{nameof(Invalid)}. If you are getting this exception while executing a query, configure a proper {nameof(IGremlinQuerySerializer)} on your {nameof(GremlinQuerySource)}.");
 }