// Path: lang/java/src/name/jenkins/paul/john/concordia/exception/ConcordiaException.java
// public class ConcordiaException extends Exception {
// 	/**
// 	 * The version of this exception class.
// 	 */
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * Creates an exception with a reason why this exception was thrown.
// 	 * 
// 	 * @param reason
// 	 *        The user-friendly reason this exception was thrown.
// 	 */
// 	public ConcordiaException(final String reason) {
// 		super(reason);
// 	}
// 
// 	/**
// 	 * Creates an exception with an underlying cause.
// 	 * 
// 	 * @param cause
// 	 *        The cause for the exception.
// 	 */
// 	public ConcordiaException(final Throwable cause) {
// 		super(cause);
// 	}
// 
// 	/**
// 	 * Creates an exception with a reason and an underlying cause.
// 	 * 
// 	 * @param reason
// 	 *        The reason this exception was thrown.
// 	 * 
// 	 * @param cause
// 	 *        The underlying cause of this exception.
// 	 */
// 	public ConcordiaException(final String reason, final Throwable cause) {
// 		super(reason, cause);
// 	}
// }


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import name.jenkins.paul.john.concordia.exception.ConcordiaException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
     * Creates a new constant-type array schema.
     *
     * @param doc
     *        Optional documentation for this Schema.
     *
     * @param optional
     *        Whether or not data for this Schema is optional.
     *
     * @param name
     *        The name of this field, which is needed when constructing an
     *        {@link ObjectSchema}.
     *
     * @param constType
     *        The type of all of the elements in corresponding data arrays.
     *
     * @param constLength
     *        An array of types where the type at each index in this array must
     *        equal the type in at the corresponding index in an array of data.
     *
     * @throws ConcordiaException
     *         The constType and constLength are both null or are both not
     *         null. Only one may be given.
     */
	@JsonCreator
	protected ArraySchema(
		@JsonProperty(JSON_KEY_DOC) final String doc,
		@JsonProperty(JSON_KEY_OPTIONAL) final boolean optional,
		@JsonProperty(ObjectSchema.JSON_KEY_NAME) final String name,
		@JsonProperty(JSON_KEY_CONST_TYPE) final Schema constType,
		@JsonProperty(JSON_KEY_CONST_LENGTH) final List<Schema> constLength)
// Path: lang/java/src/name/jenkins/paul/john/concordia/exception/ConcordiaException.java
// public class ConcordiaException extends Exception {
// 	/**
// 	 * The version of this exception class.
// 	 */
// 	private static final long serialVersionUID = 1L;
// 
// 	/**
// 	 * Creates an exception with a reason why this exception was thrown.
// 	 * 
// 	 * @param reason
// 	 *        The user-friendly reason this exception was thrown.
// 	 */
// 	public ConcordiaException(final String reason) {
// 		super(reason);
// 	}
// 
// 	/**
// 	 * Creates an exception with an underlying cause.
// 	 * 
// 	 * @param cause
// 	 *        The cause for the exception.
// 	 */
// 	public ConcordiaException(final Throwable cause) {
// 		super(cause);
// 	}
// 
// 	/**
// 	 * Creates an exception with a reason and an underlying cause.
// 	 * 
// 	 * @param reason
// 	 *        The reason this exception was thrown.
// 	 * 
// 	 * @param cause
// 	 *        The underlying cause of this exception.
// 	 */
// 	public ConcordiaException(final String reason, final Throwable cause) {
// 		super(reason, cause);
// 	}
// }


// Path: lang/java/src/name/jenkins/paul/john/concordia/schema/ArraySchema.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import name.jenkins.paul.john.concordia.exception.ConcordiaException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;

     * Creates a new constant-type array schema.
     *
     * @param doc
     *        Optional documentation for this Schema.
     *
     * @param optional
     *        Whether or not data for this Schema is optional.
     *
     * @param name
     *        The name of this field, which is needed when constructing an
     *        {@link ObjectSchema}.
     *
     * @param constType
     *        The type of all of the elements in corresponding data arrays.
     *
     * @param constLength
     *        An array of types where the type at each index in this array must
     *        equal the type in at the corresponding index in an array of data.
     *
     * @throws ConcordiaException
     *         The constType and constLength are both null or are both not
     *         null. Only one may be given.
     */
	@JsonCreator
	protected ArraySchema(
		@JsonProperty(JSON_KEY_DOC) final String doc,
		@JsonProperty(JSON_KEY_OPTIONAL) final boolean optional,
		@JsonProperty(ObjectSchema.JSON_KEY_NAME) final String name,
		@JsonProperty(JSON_KEY_CONST_TYPE) final Schema constType,
		@JsonProperty(JSON_KEY_CONST_LENGTH) final List<Schema> constLength)
		throws ConcordiaException {