def mk_range_fn(self, start, step, output_type, _range_fn_cache = {}):
    
      
    start_is_const = start.__class__ is Const
    step_is_const = step.__class__ is Const
    
    key = output_type, (start.type, start_is_const), (step.type, step_is_const)
    if key in _range_fn_cache:
      fn = _range_fn_cache[key]
    else:
      input_types = []
      if not start_is_const: input_types.append(start.type)
      if not step_is_const: input_types.append(step.type)
      input_types.append(Int64)
      fn, builder, input_vars = build_fn(input_types, output_type)
    
      assert len(input_vars) == (3 - start_is_const - step_is_const), \
        "Unexpected # of input vars %d" % len(input_vars)
        
      counter = 0
      if start_is_const:
        inner_start = start 
      else:
        inner_start = input_vars[counter]
        counter += 1
    
      if step_is_const:
        inner_step = step 
      else:
        inner_step = input_vars[counter]
        counter += 1
    
      idx = input_vars[counter]
    
      value = builder.add(builder.mul(idx, inner_step), inner_start)
      builder.return_(builder.cast(value, output_type))
      fn.created_by = self.fn.created_by 
      _range_fn_cache[key] = fn
    
    closure_args = []
    if not start_is_const: 
      closure_args.append(start)
    if not step_is_const: 
      closure_args.append(step)
    return self.closure(fn, closure_args)
Returns the maven artifact id for a given api.
dataset/ETHPy150Open iskandr/parakeet/parakeet/transforms/lower_array_operators.py/LowerArrayOperators.mk_range_fn--crossover with--dataset/ETHPy150Open google/apis-client-generator/src/googleapis/codegen/utilities/maven_utils.py/GetMavenArtifactId