All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.qt.core.QDeclarableSignals Maven / Gradle / Ivy

There is a newer version: 6.8.0
Show newest version
/****************************************************************************
**
** Copyright (C) 2009-2024 Dr. Peter Droste, Omix Visualization GmbH & Co. KG. All rights reserved.
**
** This file is part of Qt Jambi.
**
** $BEGIN_LICENSE$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
** 
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
** $END_LICENSE$

**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
package io.qt.core;

import java.util.Arrays;
import java.util.function.Consumer;
import java.util.function.Supplier;

import io.qt.*;
import io.qt.core.QMetaObject.*;

/**
 * QDeclarableSignals is a namespace containing signal types to be used in any other contexts than member signals.
 * Declarable signals are never realized as Qt's meta object signals but have a lightweight Java implementation.
 */
public final class QDeclarableSignals {
	private QDeclarableSignals() {}
	
	private final static String DEFAULT_NAME = "anonymous_signal";
	
    /**
     * Use this signal class to declare a local signal.
     */
    public static final class Signal0 extends QMetaObject.AbstractPublicSignal0 {
        
		public Signal0() {
			this(DEFAULT_NAME);
		}
    	
    	public Signal0(String signalName) {
			super(signalName);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal1 extends QMetaObject.AbstractPublicSignal1 {
        
		public Signal1(@StrictNonNull Class typeA) {
			this(DEFAULT_NAME, typeA);
		}
    	
    	public Signal1(@StrictNonNull String signalName, @StrictNonNull Class typeA) {
			super(signalName, typeA);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal2 extends QMetaObject.AbstractPublicSignal2 {
        
		public Signal2(@StrictNonNull Class typeA, @StrictNonNull Class typeB) {
			this(DEFAULT_NAME, typeA, typeB);
		}
    	
    	public Signal2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB) {
			super(signalName, typeA, typeB);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal3 extends QMetaObject.AbstractPublicSignal3 {
        
		public Signal3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC) {
			this(DEFAULT_NAME, typeA, typeB, typeC);
		}
    	
    	public Signal3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC) {
			super(signalName, typeA, typeB, typeC);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal4 extends QMetaObject.AbstractPublicSignal4 {
        
		public Signal4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD);
		}
    	
    	public Signal4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD) {
			super(signalName, typeA, typeB, typeC, typeD);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal5 extends QMetaObject.AbstractPublicSignal5 {
        
		public Signal5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE);
		}
    	
    	public Signal5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE) {
			super(signalName, typeA, typeB, typeC, typeD, typeE);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal6 extends QMetaObject.AbstractPublicSignal6 {
        
		public Signal6(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF);
		}
    	
    	public Signal6(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF) {
			super(signalName, typeA, typeB, typeC, typeD, typeE, typeF);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal7 extends QMetaObject.AbstractPublicSignal7 {
        
		public Signal7(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
		}
    	
    	public Signal7(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG) {
			super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal8 extends QMetaObject.AbstractPublicSignal8 {
        
		public Signal8(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
		}
    	
    	public Signal8(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH) {
			super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
		}
    }
    
    /**
     * Use this signal class to declare a local signal.
     *
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     * @param  The type of the single parameter of the signal.
     */
    public static final class Signal9 extends QMetaObject.AbstractPublicSignal9 {
        
		public Signal9(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI) {
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    	
    	public Signal9(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI) {
			super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    }

    /**
     * Equivalent to {@link Signal1} with default value for the parameter.
     *
     * @param  The type of the first parameter of the signal.
     */
    public static final class Signal1Default1 extends QMetaObject.AbstractSignal1Default1{
        
		public Signal1Default1(@StrictNonNull Class typeA, @StrictNonNull Supplier arg1Default){
    		this(DEFAULT_NAME, typeA, arg1Default);
    	}
    	
    	public Signal1Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Supplier arg1Default){
    		super(signalName, typeA, arg1Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal2} with default value for parameter no. 2.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     */
    public static final class Signal2Default1 extends QMetaObject.AbstractSignal2Default1{
        
		public Signal2Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Supplier arg2Default) {
			this(DEFAULT_NAME, typeA, typeB, arg2Default);
		}
		
		public Signal2Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Supplier arg2Default) {
			super(signalName, typeA, typeB, arg2Default);
		}
	}
    
    /**
     * Equivalent to {@link Signal2} with default values for parameters 1 and 2.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     */
    public static final class Signal2Default2 extends QMetaObject.AbstractSignal2Default2{
        
		public Signal2Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default){
			this(DEFAULT_NAME, typeA, typeB, arg1Default, arg2Default);
    	}
    	
    	public Signal2Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default){
    		super(signalName, typeA, typeB, arg1Default, arg2Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal3} with default value for parameter no. 3.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     */
    public static final class Signal3Default1 extends QMetaObject.AbstractSignal3Default1 {
        
		public Signal3Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg3Default) {
			super(signalName, typeA, typeB, typeC, arg3Default);
		}
		
		public Signal3Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg3Default) {
			this(DEFAULT_NAME, typeA, typeB, typeC, arg3Default);
		}
    }
    
    /**
     * Equivalent to {@link Signal3} with default values for parameters 2 and 3.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     */
    public static final class Signal3Default2 extends QMetaObject.AbstractSignal3Default2 {
        
		public Signal3Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default){
    		super(signalName, typeA, typeB, typeC, arg2Default, arg3Default);
    	}
    	
    	public Signal3Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, arg2Default, arg3Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal3} with default values for parameters 1 to 3.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     */
    public static final class Signal3Default3 extends QMetaObject.AbstractSignal3Default3{
        
		public Signal3Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default){
    		super(signalName, typeA, typeB, typeC, arg1Default, arg2Default, arg3Default);
    	}
    	
    	public Signal3Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, arg1Default, arg2Default, arg3Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal4} with default value for parameter no. 4.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     */
    public static final class Signal4Default1 extends QMetaObject.AbstractSignal4Default1{
        
		public Signal4Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg4Default){
    		super(signalName, typeA, typeB, typeC, typeD, arg4Default);
    	}
    	
    	public Signal4Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg4Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, typeD, arg4Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal4} with default values for parameters 3 and 4.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     */
    public static final class Signal4Default2 extends QMetaObject.AbstractSignal4Default2{
        
		public Signal4Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		super(signalName, typeA, typeB, typeC, typeD, arg3Default, arg4Default);
    	}
    	
    	public Signal4Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, typeD, arg3Default, arg4Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal4} with default values for parameters 2 to 4.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     */
    public static final class Signal4Default3 extends QMetaObject.AbstractSignal4Default3{
        
		public Signal4Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		super(signalName, typeA, typeB, typeC, typeD, arg2Default, arg3Default, arg4Default);
    	}
    	
    	public Signal4Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, typeD, arg2Default, arg3Default, arg4Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal4} with default values for parameters 1 to 4.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     */
    public static final class Signal4Default4 extends QMetaObject.AbstractSignal4Default4{
        
		public Signal4Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, 
				@StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, 
				@StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		super(signalName, typeA, typeB, typeC, typeD, arg1Default, arg2Default, arg3Default, arg4Default);
    	}
    	
    	public Signal4Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, 
    			@StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, 
    			@StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default){
    		this(DEFAULT_NAME, typeA, typeB, typeC, typeD, arg1Default, arg2Default, arg3Default, arg4Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal5} with default value for parameter no. 5.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     */
    public static final class Signal5Default1 extends QMetaObject.AbstractSignal5Default1{
		public Signal5Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg5Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, arg5Default);
    	}
    	public Signal5Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg5Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, arg5Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal5} with default values for parameters 4 and 5.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     */
    public static final class Signal5Default2 extends QMetaObject.AbstractSignal5Default2{
		public Signal5Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, arg4Default, arg5Default);
    	}
    	public Signal5Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, arg4Default, arg5Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal5} with default values for parameters 3 to 5.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     */
    public static final class Signal5Default3 extends QMetaObject.AbstractSignal5Default3{
		public Signal5Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, arg3Default, arg4Default, arg5Default);
    	}
    	public Signal5Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, arg3Default, arg4Default, arg5Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal5} with default values for parameters 2 to 5.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     */
    public static final class Signal5Default4 extends QMetaObject.AbstractSignal5Default4{
		public Signal5Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, arg2Default, arg3Default, arg4Default, arg5Default);
    	}
    	public Signal5Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, arg2Default, arg3Default, arg4Default, arg5Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal5} with default values for parameters 1 to 5.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     */
    public static final class Signal5Default5 extends QMetaObject.AbstractSignal5Default5{
		public Signal5Default5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default);
    	}
    	public Signal5Default5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default value for parameter no. 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default1 extends QMetaObject.AbstractSignal6Default1{
		public Signal6Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg6Default);
    	}
    	public Signal6Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default values for parameters 5 and 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default2 extends QMetaObject.AbstractSignal6Default2{
		public Signal6Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg5Default, arg6Default);
    	}
    	public Signal6Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg5Default, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default values for parameters 4 to 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default3 extends AbstractSignal6Default3{
		public Signal6Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg4Default, arg5Default, arg6Default);
    	}
    	public Signal6Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg4Default, arg5Default, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default values for parameters 3 to 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default4 extends AbstractSignal6Default4{
		public Signal6Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    	public Signal6Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default values for parameters 2 to 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default5 extends AbstractSignal6Default5{
		public Signal6Default5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    	public Signal6Default5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal6} with default values for parameters 1 to 6.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     */
    public static final class Signal6Default6 extends AbstractSignal6Default6{
		public Signal6Default6(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    	public Signal6Default6(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default value for parameter no. 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default1 extends AbstractSignal7Default1{
		public Signal7Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg7Default);
    	}
    	public Signal7Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 6 and 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default2 extends AbstractSignal7Default2 {
		public Signal7Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg6Default, arg7Default);
    	}
    	public Signal7Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 5 to 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default3 extends AbstractSignal7Default3 {
		public Signal7Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg5Default, arg6Default, arg7Default);
    	}
    	public Signal7Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg5Default, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 4 to 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default4 extends AbstractSignal7Default4 {
		public Signal7Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    	public Signal7Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 3 to 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default5 extends AbstractSignal7Default5 {
		public Signal7Default5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    	public Signal7Default5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 2 to 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default6 extends AbstractSignal7Default6 {
		public Signal7Default6(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    	public Signal7Default6(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal7} with default values for parameters 1 to 7.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     */
    public static final class Signal7Default7 extends AbstractSignal7Default7{
		public Signal7Default7(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    	public Signal7Default7(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default value for parameter no. 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default1 extends AbstractSignal8Default1{
		public Signal8Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg8Default);
    	}
    	public Signal8Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 7 and 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default2 extends AbstractSignal8Default2 {
		public Signal8Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg7Default, arg8Default);
    	}
    	public Signal8Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 6 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default3 extends AbstractSignal8Default3 {
		public Signal8Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 5 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default4 extends AbstractSignal8Default4 {
		public Signal8Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 4 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default5 extends AbstractSignal8Default5 {
		public Signal8Default5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 3 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default6 extends AbstractSignal8Default6 {
		public Signal8Default6(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default6(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 2 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default7 extends AbstractSignal8Default7 {
		public Signal8Default7(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default7(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal8} with default values for parameters 1 to 8.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     */
    public static final class Signal8Default8 extends AbstractSignal8Default8{
		public Signal8Default8(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    	public Signal8Default8(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default value for parameter no. 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default1 extends AbstractSignal9Default1{
		public Signal9Default1(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg9Default);
    	}
    	public Signal9Default1(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 8 and 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default2 extends AbstractSignal9Default2 {
		public Signal9Default2(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg8Default, arg9Default);
    	}
    	public Signal9Default2(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 7 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default3 extends AbstractSignal9Default3 {
		public Signal9Default3(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default3(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg7Default, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 6 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default4 extends AbstractSignal9Default4 {
		public Signal9Default4(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default4(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 5 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default5 extends AbstractSignal9Default5 {
		public Signal9Default5(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default5(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 4 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default6 extends AbstractSignal9Default6 {
		public Signal9Default6(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
		}
    	public Signal9Default6(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
		}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 3 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default7 extends AbstractSignal9Default7 {
		public Signal9Default7(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default7(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 2 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default8 extends AbstractSignal9Default8 {
		public Signal9Default8(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default8(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    }
    
    /**
     * Equivalent to {@link Signal9} with default values for parameters 1 to 9.
     *
     * @param  The type of the first parameter of the signal.
     * @param  The type of the second parameter of the signal.
     * @param  The type of the third parameter of the signal.
     * @param  The type of the fourth parameter of the signal.
     * @param  The type of the fifth parameter of the signal.
     * @param  The type of the sixth parameter of the signal.
     * @param  The type of the seventh parameter of the signal.
     * @param  The type of the eighth parameter of the signal.
     * @param  The type of the ninth parameter of the signal.
     */
    public static final class Signal9Default9 extends AbstractSignal9Default9{
		public Signal9Default9(@StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
			this(DEFAULT_NAME, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    	public Signal9Default9(@StrictNonNull String signalName, @StrictNonNull Class typeA, @StrictNonNull Class typeB, @StrictNonNull Class typeC, @StrictNonNull Class typeD, @StrictNonNull Class typeE, @StrictNonNull Class typeF, @StrictNonNull Class typeG, @StrictNonNull Class typeH, @StrictNonNull Class typeI, @StrictNonNull Supplier arg1Default, @StrictNonNull Supplier arg2Default, @StrictNonNull Supplier arg3Default, @StrictNonNull Supplier arg4Default, @StrictNonNull Supplier arg5Default, @StrictNonNull Supplier arg6Default, @StrictNonNull Supplier arg7Default, @StrictNonNull Supplier arg8Default, @StrictNonNull Supplier arg9Default){
    		super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI, arg1Default, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default);
    	}
    }

    /**
     * Use this signal class to declare a local signal.
     */
    public static final class GenericSignal extends AbstractPrivateGenericSignal implements QMetaObject.GenericConnectable {
        
		public GenericSignal(@StrictNonNull Class @StrictNonNull... types) {
			this(DEFAULT_NAME, types);
		}
		
		public GenericSignal(@StrictNonNull String signalName, @StrictNonNull Class @StrictNonNull... types) {
			super(signalName, types);
		}
    	
    	public final void emit(Object...args) {
    		super.emit(args);
    	}
    }

    /**
     * Use this signal class to declare a local signal.
     */
    public static final class PrivateGenericSignal extends AbstractPrivateGenericSignal {
    	public PrivateGenericSignal(@StrictNonNull Class @StrictNonNull... types) {
			this(DEFAULT_NAME, types);
		}
    	
    	public PrivateGenericSignal(@StrictNonNull Consumer<@StrictNonNull GenericSlot> emitConsumer, @StrictNonNull Class @StrictNonNull... types) {
			this(emitConsumer, DEFAULT_NAME, types);
		}
    	
    	public PrivateGenericSignal(@StrictNonNull String signalName, @StrictNonNull Class @StrictNonNull... types) {
			super(signalName, types);
		}
    	
    	public PrivateGenericSignal(@StrictNonNull Consumer<@StrictNonNull GenericSlot> emitConsumer, String signalName, @StrictNonNull Class @StrictNonNull... types) {
			super(emitConsumer, signalName, types);
		}
    }

    /**
     * Use this signal class to declare a local signal.
     */
    public static abstract class AbstractPrivateGenericSignal extends QMetaObject.AbstractSignal {
            	
    	private final Class[] types;
    	
    	AbstractPrivateGenericSignal(@StrictNonNull Consumer<@StrictNonNull GenericSlot> emitConsumer, String signalName, @StrictNonNull Class @StrictNonNull... types) {
			this(signalName, types);
			emitConsumer.accept(this::emit);
		}
    	
    	AbstractPrivateGenericSignal(@StrictNonNull String signalName, @StrictNonNull Class... types) {
			super(signalName, types);
			for (int i = 0; i < types.length; i++) {
				if(types[i] == void.class) {
					throw new IllegalArgumentException("void is not a valid type for signals");
				}else if(types[i] == null) {
					throw new IllegalArgumentException("null is not a valid type for signals");
				}
			}
			this.types = Arrays.copyOf(types, types.length);
		}
    	
    	@QtUninvokable
    	private void emit(Object...args) {
    		if(args.length!=types.length) {
    			throw new IllegalArgumentException("wrong number of arguments");
    		}
    		for (int i = 0; i < args.length; i++) {
    			if(types[i].isPrimitive()) {
    				if(types[i]==int.class) {
    					args[i] = (int)args[i];
    				}else if(types[i]==byte.class) {
    					args[i] = (byte)args[i];
    				}else if(types[i]==boolean.class) {
    					args[i] = (boolean)args[i];
    				}else if(types[i]==char.class) {
    					args[i] = (char)args[i];
    				}else if(types[i]==short.class) {
    					args[i] = (short)args[i];
    				}else if(types[i]==long.class) {
    					args[i] = (long)args[i];
    				}else if(types[i]==double.class) {
    					args[i] = (double)args[i];
    				}else if(types[i]==float.class) {
    					args[i] = (float)args[i];
    				}else {
    					throw new IllegalArgumentException("illegal signal type: "+types[i]);
    				}
    			}else {
    				args[i] = types[i].cast(args[i]);
    			}
			}
    		super.emitSignal(args);
    	}
    
        /**
         * Initializes a connection to the slot.
         * 
         * @param slot the slot to be connected
         * @param connectionType type of connection
         * @return connection if successful or null otherwise
         * @throws io.qt.QMisfittingSignatureException Raised if their signatures are incompatible.
         */
        public final QMetaObject.@NonNull Connection connect(@StrictNonNull GenericSlot slot, Qt.@StrictNonNull ConnectionType @StrictNonNull... connectionType) {
            return addConnectionToSlotObject(slot, connectionType);
        }
    
        /**
         * Removes the connection to the given slot.
         * 
         * @param slot the slot to be disconnected
         * @return true if successfully disconnected, or false otherwise.
         */
        public final boolean disconnect(@StrictNonNull GenericSlot slot) {
            return removeConnectionToSlotObject(slot);
        }
    
        /**
         * Initializes a connection to the signal.
         * 
         * @param signal the signal to be connected
         * @param connectionType type of connection
         * @return connection if successful or null otherwise
         * @throws io.qt.QMisfittingSignatureException Raised if their signatures are incompatible.
         */
        public final QMetaObject.@NonNull Connection connect(@StrictNonNull GenericConnectable signal, Qt.@StrictNonNull ConnectionType @StrictNonNull... connectionType) {
            return addConnectionToSignalObject((AbstractSignal)signal, connectionType);
        }
    
        /**
         * Removes the connection to the given signal.
         * 
         * @param signal the signal to be disconnected
         * @return true if successfully disconnected, or false otherwise.
         */
        public final boolean disconnect(@StrictNonNull GenericConnectable signal) {
            return removeConnectionToSignalObject((AbstractSignal)signal);
        }
    }
}