public <T, T1, T2, T3> FutureValue<T> futureCall(Job3<T, T1, T2, T3> jobInstance,
      Value<? extends T1> v1, Value<? extends T2> v2, Value<? extends T3> v3,
      JobSetting... settings) {
    return futureCallUnchecked(settings, jobInstance, v1, v2, v3);
  }
public < T , T1 , T2 , T3 > FutureValue < T > futureCall ( Job3 < T , T1 , T2 , T3 > jobInstance , Value < ? extends T1 > v1 , Value < ? extends T2 > v2 , Value < ? extends T3 > v3 , JobSetting ... settings ) { return futureCallUnchecked ( settings , jobInstance , v1 , v2 , v3 ) ; }
Invoke this method from within the {@code run} method of a <b>generator
job</b> in order to specify a job node in the generated child job graph.
This version of the method is for child jobs that take three arguments.

@param <T> The return type of the child job being specified
@param <T1> The type of the first input to the child job
@param <T2> The type of the second input to the child job
@param <T3> The type of the third input to the child job
@param jobInstance A user-written job object
@param v1 the first input to the child job
@param v2 the second input to the child job
@param v3 the third input to the child job
@param settings Optional one or more {@code JobSetting}
@return a {@code FutureValue} representing an empty value slot that will be
filled by the output of {@code jobInstance} when it finalizes. This
may be passed in to further invocations of {@code futureCall()} in
order to specify a data dependency.