docs: public BytecodeNode generateCall(
              String name,
              ScalarFunctionImplementation function,
              List<BytecodeNode> arguments,
              Optional<OutputBlockVariableAndType> outputBlockVariableAndType)
      {
          Optional<BytecodeNode> instance = Optional.empty();
          if (function.getInstanceFactory().isPresent()) {
              FieldDefinition field = cachedInstanceBinder.getCachedInstance(function.getInstanceFactory().get());
              instance = Optional.of(scope.getThis().getField(field));
          }
          return generateInvocation(scope, name, function, instance, arguments, callSiteBinder, outputBlockVariableAndType);
      }