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

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

The newest version!
/****************************************************************************
**
** Copyright (C) 2009-2022 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.QNoDefaultValueException;
import io.qt.QtUninvokable;
import io.qt.core.QMetaObject.*;

public final class QDeclarableSignals {
	private QDeclarableSignals() {}
	
    /**
     * Use this signal class to declare a local signal.
     */
    public static final class Signal0 extends QMetaObject.AbstractPublicSignal0 {
        
		public Signal0() {
			super(new Class[0]);
		}
    	
    	public Signal0(String signalName) {
			super(signalName, new Class[0]);
		}
    }
    
    /**
     * 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(Class typeA) {
			super(typeA);
		}
    	
    	public Signal1(String signalName, 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(Class typeA, Class typeB) {
			super(typeA, typeB);
		}
    	
    	public Signal2(String signalName, Class typeA, 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(Class typeA, Class typeB, Class typeC) {
			super(typeA, typeB, typeC);
		}
    	
    	public Signal3(String signalName, Class typeA, Class typeB, 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(Class typeA, Class typeB, Class typeC, Class typeD) {
			super(typeA, typeB, typeC, typeD);
		}
    	
    	public Signal4(String signalName, Class typeA, Class typeB, Class typeC, 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(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE) {
			super(typeA, typeB, typeC, typeD, typeE);
		}
    	
    	public Signal5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, 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(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF) {
			super(typeA, typeB, typeC, typeD, typeE, typeF);
		}
    	
    	public Signal6(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, 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(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG) {
			super(typeA, typeB, typeC, typeD, typeE, typeF, typeG);
		}
    	
    	public Signal7(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, 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(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH) {
			super(typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
		}
    	
    	public Signal8(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, 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(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI) {
			super(typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    	
    	public Signal9(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI) {
			super(signalName, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    }

    public static final class Signal1Default1 extends QMetaObject.AbstractPublicSignal1 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal1Default1(Class typeA, Supplier arg1Default){
    		super(typeA);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	public Signal1Default1(String signalName, Class typeA, Supplier arg1Default){
    		super(signalName, typeA);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal2Default1 extends QMetaObject.AbstractSignal2Default1{
        
		public Signal2Default1(Class typeA, Class typeB, Supplier arg2Default) {
			super(arg2Default, typeA, typeB);
		}
		
		public Signal2Default1(String signalName, Class typeA, Class typeB, Supplier arg2Default) {
			super(signalName, arg2Default, typeA, typeB);
		}
	}
    
    public static final class Signal2Default2 extends QMetaObject.AbstractSignal2Default1 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal2Default2(Class typeA, Class typeB, Supplier arg1Default, Supplier arg2Default){
    		super(arg2Default, typeA, typeB);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	public Signal2Default2(String signalName, Class typeA, Class typeB, Supplier arg1Default, Supplier arg2Default){
    		super(signalName, arg2Default, typeA, typeB);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal3Default1 extends QMetaObject.AbstractSignal3Default1 {
        
		public Signal3Default1(String signalName, Class typeA, Class typeB, Class typeC, Supplier arg3Default) {
			super(signalName, arg3Default, typeA, typeB, typeC);
		}
		
		public Signal3Default1(Class typeA, Class typeB, Class typeC, Supplier arg3Default) {
			super(arg3Default, typeA, typeB, typeC);
		}
    }
    
    public static final class Signal3Default2 extends QMetaObject.AbstractSignal3Default2 {
        
		public Signal3Default2(String signalName, Class typeA, Class typeB, Class typeC, Supplier arg2Default, Supplier arg3Default){
    		super(signalName, arg2Default, arg3Default, typeA, typeB, typeC);
    	}
    	
    	public Signal3Default2(Class typeA, Class typeB, Class typeC, Supplier arg2Default, Supplier arg3Default){
    		super(arg2Default, arg3Default, typeA, typeB, typeC);
    	}
    }
    
    public static final class Signal3Default3 extends QMetaObject.AbstractSignal3Default2 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal3Default3(String signalName, Class typeA, Class typeB, Class typeC, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default){
    		super(signalName, arg2Default, arg3Default, typeA, typeB, typeC);
    		if(arg2Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	public Signal3Default3(Class typeA, Class typeB, Class typeC, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default){
    		super(arg2Default, arg3Default, typeA, typeB, typeC);
    		if(arg2Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal4Default1 extends QMetaObject.AbstractSignal4Default1{
        
		public Signal4Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg4Default){
    		super(signalName, arg4Default, typeA, typeB, typeC, typeD);
    	}
    	
    	public Signal4Default1(Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg4Default){
    		super(arg4Default, typeA, typeB, typeC, typeD);
    	}
    }
    
    public static final class Signal4Default2 extends QMetaObject.AbstractSignal4Default2{
        
		public Signal4Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg3Default, Supplier arg4Default){
    		super(signalName, arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    	}
    	
    	public Signal4Default2(Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg3Default, Supplier arg4Default){
    		super(arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    	}
    }
    
    public static final class Signal4Default3 extends QMetaObject.AbstractSignal4Default3{
        
		public Signal4Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    	}
    	
    	public Signal4Default3(Class typeA, Class typeB, Class typeC, Class typeD, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default){
    		super(arg2Default, arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    	}
    }
    
    public static final class Signal4Default4 extends QMetaObject.AbstractSignal4Default3 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal4Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, 
    			Supplier arg1Default, Supplier arg2Default, 
    			Supplier arg3Default, Supplier arg4Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	public Signal4Default4(Class typeA, Class typeB, Class typeC, Class typeD, 
    			Supplier arg1Default, Supplier arg2Default, 
    			Supplier arg3Default, Supplier arg4Default){
    		super(arg2Default, arg3Default, arg4Default, typeA, typeB, typeC, typeD);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal5Default1 extends QMetaObject.AbstractSignal5Default1{
        		public Signal5Default1(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg5Default){
    		super(arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    	public Signal5Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg5Default){
    		super(signalName, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    }
    
    public static final class Signal5Default2 extends QMetaObject.AbstractSignal5Default2{
        		public Signal5Default2(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg4Default, Supplier arg5Default){
    		super(arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    	public Signal5Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg4Default, Supplier arg5Default){
    		super(signalName, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    }
    
    public static final class Signal5Default3 extends QMetaObject.AbstractSignal5Default3{
        		public Signal5Default3(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    	public Signal5Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(signalName, arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    }
    
    public static final class Signal5Default4 extends QMetaObject.AbstractSignal5Default4{
        		public Signal5Default4(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    	public Signal5Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    	}
    }
    
    public static final class Signal5Default5 extends QMetaObject.AbstractSignal5Default4 implements QMetaObject.Emitable0{
        
		public Signal5Default5(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	public Signal5Default5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, typeA, typeB, typeC, typeD, typeE);
    		if(arg1Default!=null){
    			this.arg1Default = arg1Default;
    		}else{
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal6Default1 extends QMetaObject.AbstractSignal6Default1{
        		public Signal6Default1(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg6Default){
    		super(arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    	public Signal6Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg6Default){
    		super(signalName, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    }
    
    public static final class Signal6Default2 extends QMetaObject.AbstractSignal6Default2{
        		public Signal6Default2(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg5Default, Supplier arg6Default){
    		super(arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    	public Signal6Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg5Default, Supplier arg6Default){
    		super(signalName, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    }
    
    public static final class Signal6Default3 extends AbstractSignal6Default3{
        		public Signal6Default3(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    	public Signal6Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(signalName, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    }
    
    public static final class Signal6Default4 extends AbstractSignal6Default4{
        		public Signal6Default4(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    	public Signal6Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(signalName, arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    }
    
    public static final class Signal6Default5 extends AbstractSignal6Default5{
        		public Signal6Default5(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    	public Signal6Default5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
    	}
    }
    
    public static final class Signal6Default6 extends AbstractSignal6Default5 implements QMetaObject.Emitable0{
        
		public Signal6Default6(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	public Signal6Default6(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, typeA, typeB, typeC, typeD, typeE, typeF);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
    	@Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal7Default1 extends AbstractSignal7Default1{
        		public Signal7Default1(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg7Default){
    		super(arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg7Default){
    		super(signalName, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default2 extends AbstractSignal7Default2 {
        		public Signal7Default2(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg6Default, Supplier arg7Default){
    		super(arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default3 extends AbstractSignal7Default3 {
        		public Signal7Default3(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default4 extends AbstractSignal7Default4 {
        		public Signal7Default4(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default5 extends AbstractSignal7Default5 {
        		public Signal7Default5(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default6 extends AbstractSignal7Default6 {
        		public Signal7Default6(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    	public Signal7Default6(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
    	}
    }
    
    public static final class Signal7Default7 extends AbstractSignal7Default6 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal7Default7(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(2);
        	}
    	}
    	public Signal7Default7(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(2);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal8Default1 extends AbstractSignal8Default1{
        		public Signal8Default1(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg8Default){
    		super(arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg8Default){
    		super(signalName, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default2 extends AbstractSignal8Default2 {
        		public Signal8Default2(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg7Default, Supplier arg8Default){
    		super(arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default3 extends AbstractSignal8Default3 {
        		public Signal8Default3(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default4 extends AbstractSignal8Default4 {
        		public Signal8Default4(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default5 extends AbstractSignal8Default5 {
        		public Signal8Default5(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default6 extends AbstractSignal8Default6 {
        		public Signal8Default6(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default6(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default7 extends AbstractSignal8Default7 {
        		public Signal8Default7(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    	public Signal8Default7(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
    	}
    }
    
    public static final class Signal8Default8 extends AbstractSignal8Default7 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal8Default8(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
			this.arg1Default = arg1Default;
			if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	public Signal8Default8(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH);
			this.arg1Default = arg1Default;
			if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }
    
    public static final class Signal9Default1 extends AbstractSignal9Default1{
        		public Signal9Default1(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg9Default){
    		super(arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default1(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg9Default){
    		super(signalName, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default2 extends AbstractSignal9Default2 {
        		public Signal9Default2(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg8Default, Supplier arg9Default){
    		super(arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default2(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default3 extends AbstractSignal9Default3 {
        		public Signal9Default3(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default3(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default4 extends AbstractSignal9Default4 {
        		public Signal9Default4(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default4(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default5 extends AbstractSignal9Default5 {
        		public Signal9Default5(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default5(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default6 extends AbstractSignal9Default6 {
        		public Signal9Default6(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    	public Signal9Default6(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
		}
    }
    
    public static final class Signal9Default7 extends AbstractSignal9Default7 {
        		public Signal9Default7(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default7(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default8 extends AbstractSignal9Default8 {
        		public Signal9Default8(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    	public Signal9Default8(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
    	}
    }
    
    public static final class Signal9Default9 extends AbstractSignal9Default8 implements QMetaObject.Emitable0, QMetaObject.Connectable0 {
        
		public Signal9Default9(Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	public Signal9Default9(String signalName, Class typeA, Class typeB, Class typeC, Class typeD, Class typeE, Class typeF, Class typeG, Class typeH, Class typeI, Supplier arg1Default, Supplier arg2Default, Supplier arg3Default, Supplier arg4Default, Supplier arg5Default, Supplier arg6Default, Supplier arg7Default, Supplier arg8Default, Supplier arg9Default){
    		super(signalName, arg2Default, arg3Default, arg4Default, arg5Default, arg6Default, arg7Default, arg8Default, arg9Default, typeA, typeB, typeC, typeD, typeE, typeF, typeG, typeH, typeI);
			this.arg1Default = arg1Default;
    		if(this.arg1Default==null){
        		throw new QNoDefaultValueException(1);
        	}
    	}
    	
    	private final Supplier arg1Default;
        
        @Override public final void emit() {
       		emitDefaultSignal(arg1Default);
        }
    }

    /**
     * Use this signal class to declare a local signal.
     */
    public static final class GenericSignal extends AbstractPrivateGenericSignal implements QMetaObject.GenericConnectable {
        
		public GenericSignal(Class...types) {
			super(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(Class...types) {
			super(types);
		}
    	
    	public PrivateGenericSignal(Consumer emitConsumer, Class...types) {
			super(emitConsumer, types);
		}
    	
    	public PrivateGenericSignal(String signalName, Class...types) {
			super(signalName, types);
		}
    	
    	public PrivateGenericSignal(Consumer emitConsumer, String signalName, Class...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(Class...types) {
    		this((Consumer)null, types);
    	}
    	
    	AbstractPrivateGenericSignal(String signalName, Class...types) {
    		this(null, signalName, types);
    	}
    	
    	AbstractPrivateGenericSignal(Consumer emitConsumer, Class...types) {
			super(true, 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);
			if(emitConsumer!=null) {
				emitConsumer.accept(this::emit);
			}
		}
    	
    	AbstractPrivateGenericSignal(Consumer emitConsumer, String signalName, 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);
			if(emitConsumer!=null) {
				emitConsumer.accept(this::emit);
			}
		}
    	
    	@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.
         * @throws io.qt.QUninvokableSlotException Raised if slot is annotated @QtUninvokable.
         */
        public final QMetaObject.Connection connect(GenericSlot slot, Qt.ConnectionType... type) {
            return addConnectionToSlotObject(slot, type);
        }
    
        /**
         * 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(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.Connection connect(GenericConnectable signal, Qt.ConnectionType... type) {
            return addConnectionToSignalObject((AbstractSignal)signal, type);
        }
    
        /**
         * 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(GenericConnectable signal) {
            return removeConnectionToSignalObject((AbstractSignal)signal);
        }
    }
}