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

        // merge dynamic with static params
        final Map params = new LinkedHashMap(this.staticParams.get());
        if (mapTraversal != null) params.putAll(TraversalUtil.apply(traverser, mapTraversal));
        final Object[] kvs = this.parameters.getKeyValues(traverser);
        for (int i = 0; i < kvs.length; i += 2) {
            // this will overwrite any multi-valued kvs
            params.put(kvs[i], kvs[i + 1]);
        }
        return params;
    }
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