code: function UnwrappedUnionType(schema, opts) {
    UnionType.call(this, schema, opts);
  
    this._dynamicBranches = null;
    this._bucketIndices = {};
    this.types.forEach(function (type, index) {
      if (Type.isType(type, 'abstract', 'logical')) {
        if (!this._dynamicBranches) {
          this._dynamicBranches = [];
        }
        this._dynamicBranches.push({index: index, type: type});
      } else {
        var bucket = getTypeBucket(type);
        if (this._bucketIndices[bucket] !== undefined) {
          throw new Error(f('ambiguous unwrapped union: %j', this));
        }
        this._bucketIndices[bucket] = index;
      }
    }, this);
  
    Object.freeze(this);
  }
docs: "Natural" union type.
  
  This representation doesn't require a wrapping object and is therefore
  simpler and generally closer to what users expect. However it cannot be used
  to represent all Avro unions since some lead to ambiguities (e.g. if two
  number types are in the union).
  
  Currently, this union supports at most one type in each of the categories
  below:
  
  + `null`
  + `boolean`
  + `int`, `long`, `float`, `double`
  + `string`, `enum`
  + `bytes`, `fixed`
  + `array`
  + `map`, `record`