/// <summary>
 /// Join tween to execution in paralel
 /// </summary>
 /// <typeparam name="TArgs">Type of actions parameter</typeparam>
 /// <param name="chain">This chain</param>
 /// <param name="command">Tween command</param>
 /// <param name="args">Parameter for tween</param>
 /// <returns>This chain</returns>
 public static AsyncChain JoinTween <TArgs>(this AsyncChain chain, Func <TArgs, Tween> command, TArgs args)
 {
     return(chain.JoinCommand(new AsyncCommandTweenArgs <TArgs>(command, args)));
 }
 /// <summary>
 /// Join tween to execution in paralel
 /// </summary>
 /// <typeparam name="TArgs1">Type of actions 1st parameter</typeparam>
 /// <typeparam name="TArgs2">Type of actions 2nd parameter</typeparam>
 /// <param name="chain">This chain</param>
 /// <param name="command">Tween command</param>
 /// <param name="args1">1st parameter for action</param>
 /// <param name="args2">2nd parameter for action</param>
 /// <returns>This chain</returns>
 public static AsyncChain JoinTween <TArgs1, TArgs2>(this AsyncChain chain, Func <TArgs1, TArgs2, Tween> command, TArgs1 args1, TArgs2 args2)
 {
     return(chain.JoinCommand(new AsyncCommandTweenArgs2 <TArgs1, TArgs2>(command, args1, args2)));
 }
 /// <summary>
 /// Join tween to execution in paralel
 /// </summary>
 /// <param name="chain">This chain</param>
 /// <param name="command">Tween command</param>
 /// <returns>This chain</returns>
 public static AsyncChain JoinTween(this AsyncChain chain, Func <Tween> command)
 {
     return(chain.JoinCommand(new AsyncCommandTween(command)));
 }