// 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.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import name.jenkins.paul.john.concordia.exception.ConcordiaException;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
package name.jenkins.paul.john.concordia.schema;




/**
 * <p>
 * The superclass for all Concordia types.
 * </p>
 *
 * <p>
 * This class is immutable.
 * </p>
 *
 * <p>
 * All sub-classes MUST implement a no-argument constructor even if it is
 * private and never used. This is required by Jackson to properly perform its
 * deserialization methods. This is still applicable even if there are other
 * constructors with arguments.
 * </p>
 *
 * @author John Jenkins
 */
@JsonTypeInfo(
	use = Id.NAME,
	include = As.PROPERTY,
	property = Schema.JSON_KEY_TYPE,
	defaultImpl = ReferenceSchema.class)
@JsonSubTypes({
	@JsonSubTypes.Type(
		value = BooleanSchema.class,
		name = BooleanSchema.TYPE_ID),
	@JsonSubTypes.Type(
		value = NumberSchema.class,
// 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/Schema.java
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import name.jenkins.paul.john.concordia.exception.ConcordiaException;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;

package name.jenkins.paul.john.concordia.schema;




/**
 * <p>
 * The superclass for all Concordia types.
 * </p>
 *
 * <p>
 * This class is immutable.
 * </p>
 *
 * <p>
 * All sub-classes MUST implement a no-argument constructor even if it is
 * private and never used. This is required by Jackson to properly perform its
 * deserialization methods. This is still applicable even if there are other
 * constructors with arguments.
 * </p>
 *
 * @author John Jenkins
 */
@JsonTypeInfo(
	use = Id.NAME,
	include = As.PROPERTY,
	property = Schema.JSON_KEY_TYPE,
	defaultImpl = ReferenceSchema.class)
@JsonSubTypes({
	@JsonSubTypes.Type(
		value = BooleanSchema.class,
		name = BooleanSchema.TYPE_ID),
	@JsonSubTypes.Type(
		value = NumberSchema.class,
		name = NumberSchema.TYPE_ID),