protected Map getMergedParams(final TraverserSet<S> traverserSet) {
        if (mapTraversal == null && parameters.isEmpty()) {
            // static params only
            return Collections.unmodifiableMap(this.staticParams.get());
        }

        /*
         * Dynamic params with a barrier service. We need to reduce to one set of params. For now just disallow
         * multiple property sets. Also could be sensible to group traversers by parameter set.
         */
        final Set<Map> paramsSet = new HashSet<>();
        for (final Traverser.Admin<S> traverser : traverserSet) {
            paramsSet.add(getMergedParams(traverser));
        }
        if (paramsSet.size() > 1) {
            throw new UnsupportedOperationException("Cannot use multiple dynamic parameter sets with a barrier service call.");
        }
        return paramsSet.iterator().next();
    }
Reference implementation for service calls via the {@link ServiceRegistry} and {@link Service} APIs. This step
can be used to start a traversal or it can be used mid-traversal with one at a time or barrier execution.

@author Mike Personick (http://github.com/mikepersonick)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CallStep.java