code: function Schema(registry, definition, opt_depth) {
    this._allowUnknownProperties = false;
    this._registry = registry;
  
    this.id = undefined;
    this.type = TYPES.UNKNOWN;
    this.depth = opt_depth || registry.depth;
  
    // possible primitive values or array elements
    this.enum = undefined;
    this.ordered = false;
  
    // object property schemas
    this.properties = undefined;
    this.propertiesList = [];
    this.wildcard = undefined;
  
    // single schema for all array elements
    this.content = undefined;
  
    this.value = undefined;
    this.min = undefined;
    this.max = undefined;
    this.pattern = undefined;
  
    // schema value can be null
    this.allowNullValue = false;
  
    return this._configure(definition);
  }
docs: @param {Registry} registry The registry object
  @param {Object} definition The schema definition
  @param {?number=} opt_depth (internal) Nesting limit inheritance
  
  @constructor