// Autogenerated

using Microsoft.Extensions.DependencyInjection;

namespace InitableService;

public static class InitableExtensions
{

	public static Resolver GetInitableResolver(this IServiceProvider serviceProvider)
	{
		return new Resolver(serviceProvider);
	}

	public static Resolver<T1> GetInitableResolver<T1>(this IServiceProvider serviceProvider, T1 obj1)
	{
		return new Resolver<T1>(serviceProvider, obj1);
	}

	public static Resolver<T1, T2> GetInitableResolver<T1, T2>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2)
	{
		return new Resolver<T1, T2>(serviceProvider, obj1, obj2);
	}

	public static Resolver<T1, T2, T3> GetInitableResolver<T1, T2, T3>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3)
	{
		return new Resolver<T1, T2, T3>(serviceProvider, obj1, obj2, obj3);
	}

	public static Resolver<T1, T2, T3, T4> GetInitableResolver<T1, T2, T3, T4>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4)
	{
		return new Resolver<T1, T2, T3, T4>(serviceProvider, obj1, obj2, obj3, obj4);
	}

	public static Resolver<T1, T2, T3, T4, T5> GetInitableResolver<T1, T2, T3, T4, T5>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5)
	{
		return new Resolver<T1, T2, T3, T4, T5>(serviceProvider, obj1, obj2, obj3, obj4, obj5);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6> GetInitableResolver<T1, T2, T3, T4, T5, T6>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13, obj14);
	}

	public static Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> GetInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14, T15 obj15)
	{
		return new Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13, obj14, obj15);
	}

	public static AsyncResolver GetAsyncInitableResolver(this IServiceProvider serviceProvider)
	{
		return new AsyncResolver(serviceProvider);
	}

	public static AsyncResolver<T1> GetAsyncInitableResolver<T1>(this IServiceProvider serviceProvider, T1 obj1)
	{
		return new AsyncResolver<T1>(serviceProvider, obj1);
	}

	public static AsyncResolver<T1, T2> GetAsyncInitableResolver<T1, T2>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2)
	{
		return new AsyncResolver<T1, T2>(serviceProvider, obj1, obj2);
	}

	public static AsyncResolver<T1, T2, T3> GetAsyncInitableResolver<T1, T2, T3>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3)
	{
		return new AsyncResolver<T1, T2, T3>(serviceProvider, obj1, obj2, obj3);
	}

	public static AsyncResolver<T1, T2, T3, T4> GetAsyncInitableResolver<T1, T2, T3, T4>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4)
	{
		return new AsyncResolver<T1, T2, T3, T4>(serviceProvider, obj1, obj2, obj3, obj4);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5> GetAsyncInitableResolver<T1, T2, T3, T4, T5>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5>(serviceProvider, obj1, obj2, obj3, obj4, obj5);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13, obj14);
	}

	public static AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> GetAsyncInitableResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(this IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14, T15 obj15)
	{
		return new AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(serviceProvider, obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9, obj10, obj11, obj12, obj13, obj14, obj15);
	}

}
public class Resolver
{
	IServiceProvider _serviceProvider;
	public Resolver(IServiceProvider serviceProvider)
	{
		_serviceProvider = serviceProvider;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init();
		return initableService;
	}
}

public class Resolver<T1>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	public Resolver(IServiceProvider serviceProvider, T1 obj1)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1);
		return initableService;
	}
}

public class Resolver<T1, T2>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2);
		return initableService;
	}
}

public class Resolver<T1, T2, T3>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	private T14 _obj14;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
		_obj14 = obj14;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13, _obj14);
		return initableService;
	}
}

public class Resolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	private T14 _obj14;
	private T15 _obj15;
	public Resolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14, T15 obj15)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
		_obj14 = obj14;
		_obj15 = obj15;
	}

	public TResult GetRequiredService<TResult>()
		where TResult : class, IInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		initableService.Init(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13, _obj14, _obj15);
		return initableService;
	}
}

public class AsyncResolver
{
	IServiceProvider _serviceProvider;
	public AsyncResolver(IServiceProvider serviceProvider)
	{
		_serviceProvider = serviceProvider;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync();
		return initableService;
	}
}

public class AsyncResolver<T1>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1);
		return initableService;
	}
}

public class AsyncResolver<T1, T2>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	private T14 _obj14;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
		_obj14 = obj14;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13, _obj14);
		return initableService;
	}
}

public class AsyncResolver<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
{
	IServiceProvider _serviceProvider;
	private T1 _obj1;
	private T2 _obj2;
	private T3 _obj3;
	private T4 _obj4;
	private T5 _obj5;
	private T6 _obj6;
	private T7 _obj7;
	private T8 _obj8;
	private T9 _obj9;
	private T10 _obj10;
	private T11 _obj11;
	private T12 _obj12;
	private T13 _obj13;
	private T14 _obj14;
	private T15 _obj15;
	public AsyncResolver(IServiceProvider serviceProvider, T1 obj1, T2 obj2, T3 obj3, T4 obj4, T5 obj5, T6 obj6, T7 obj7, T8 obj8, T9 obj9, T10 obj10, T11 obj11, T12 obj12, T13 obj13, T14 obj14, T15 obj15)
	{
		_serviceProvider = serviceProvider;
		_obj1 = obj1;
		_obj2 = obj2;
		_obj3 = obj3;
		_obj4 = obj4;
		_obj5 = obj5;
		_obj6 = obj6;
		_obj7 = obj7;
		_obj8 = obj8;
		_obj9 = obj9;
		_obj10 = obj10;
		_obj11 = obj11;
		_obj12 = obj12;
		_obj13 = obj13;
		_obj14 = obj14;
		_obj15 = obj15;
	}

	public async Task<TResult> GetRequiredServiceAsync<TResult>()
		where TResult : class, IAsyncInitable<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
	{
		var initableService = _serviceProvider.GetRequiredService<TResult>()!;
		await initableService.InitAsync(_obj1, _obj2, _obj3, _obj4, _obj5, _obj6, _obj7, _obj8, _obj9, _obj10, _obj11, _obj12, _obj13, _obj14, _obj15);
		return initableService;
	}
}

