public <S> GraphTraversal<S, S> call(final String service, final Map params, final Traversal<S, Map> childTraversal) {
        final GraphTraversalSource clone = this.clone();
        clone.gremlinLang.addStep(GraphTraversal.Symbols.call, service, params, childTraversal);
        final GraphTraversal.Admin<S, S> traversal = new DefaultGraphTraversal<>(clone);
        final CallStep<S,S> step = null == childTraversal ? new CallStep(traversal, true, service, params) :
                new CallStep(traversal, true, service, params, childTraversal.asAdmin());
        return traversal.addStep(step);
    }
Spawns a {@link GraphTraversal} starting with values produced by the specified service call with both static and
dynamic parameters produced by the specified child traversal. These parameters will be merged at execution time
per the provider implementation. Reference implementation merges dynamic into static (dynamic will overwrite
static).

@param service the name of the service call
@param params static parameter map (no nested traversals)
@param childTraversal a traversal that will produce a Map of parameters for the service call when invoked.
@since 3.6.0
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource.java