// remainder of structure is variable-length: 
		// MIDIControlTransform controls[]; 
		// MIDIValueMap maps[];

		public void SetSourceEndpoint (int i, MIDIThruConnectionEndpoint endpoint)
		{
			switch (i) {
			case 0:
				this.source1 = endpoint;
				break;
			case 1:
				this.source2 = endpoint;
				break;
			case 2:
				this.source3 = endpoint;
				break;
			case 3:
				this.source4 = endpoint;
				break;
			case 4:
				this.source5 = endpoint;
				break;
			case 5:
				this.source6 = endpoint;
				break;
			case 6:
				this.source7 = endpoint;
				break;
			case 7:
				this.source8 = endpoint;
				break;
			default:
				throw new IndexOutOfRangeException ();
			}
		}
		public void SetDestinationEndpoint (int i, MIDIThruConnectionEndpoint endpoint)
		{
			switch (i) {
			case 0:
				this.destination1 = endpoint;
				break;
			case 1:
				this.destination2 = endpoint;
				break;
			case 2:
				this.destination3 = endpoint;
				break;
			case 3:
				this.destination4 = endpoint;
				break;
			case 4:
				this.destination5 = endpoint;
				break;
			case 5:
				this.destination6 = endpoint;
				break;
			case 6:
				this.destination7 = endpoint;
				break;
			case 7:
				this.destination8 = endpoint;
				break;
			default:
				throw new IndexOutOfRangeException ();
			}
		}