Name: TestVarKwArgs

Methods:
  testVarArgs:
    Body:
      Return: $.varArgsMethod(1, 2, 3, 4)

  testVarArgsContract:
    Body:
      Return: $.varArgsMethod(1, string)

  testDuplicateVarArgs:
    Body:
      Return: $.varArgsMethod(1, arg1 => 2)

  testExplicitVarArgs:
    Body:
      Return: $.varArgsMethod(1, rest => 2)

  varArgsMethod:
    Arguments:
      - arg1:
          Contract: $.int()
      - rest:
          Contract: $.int()
          Usage: VarArgs
    Body:
      Return: $rest

  testKwArgs:
    Body:
      Return: $.kwArgsMethod(arg1 => 1, arg2 => 2, arg3 => 3)

  testKwArgsContract:
    Body:
      Return: $.kwArgsMethod(arg1 => 1, arg2 => string)

  testDuplicateKwArgs:
    Body:
      Return: $.kwArgsMethod(1, arg1 => 2)

  kwArgsMethod:
    Arguments:
      - arg1:
          Contract: $.int()
      - rest:
          Contract: $.int()
          Usage: KwArgs
    Body:
      Return: $rest

  testArgs:
    Body:
      Return: $.argsMethod(1, 2, 3, arg1 => 4, arg2 => 5, arg3 => 6)

  argsMethod:
    Arguments:
      - args:
          Contract: $.int()
          Usage: VarArgs
      - kwargs:
          Contract: $.int()
          Usage: KwArgs
    Body:
      Return: [$args, $kwargs]
