code: function EnumType(schema, opts) {
    Type.call(this, schema, opts);
    if (!Array.isArray(schema.symbols) || !schema.symbols.length) {
      throw new Error(f('invalid enum symbols: %j', schema.symbols));
    }
    this.symbols = Object.freeze(schema.symbols.slice());
    this._indices = {};
    this.symbols.forEach(function (symbol, i) {
      if (!isValidName(symbol)) {
        throw new Error(f('invalid %s symbol: %j', this, symbol));
      }
      if (this._indices[symbol] !== undefined) {
        throw new Error(f('duplicate %s symbol: %j', this, symbol));
      }
      this._indices[symbol] = i;
    }, this);
    this._branchConstructor = this._createBranchConstructor();
    Object.freeze(this);
  }
docs: Avro enum type.
  
  Represented as strings (with allowed values from the set of symbols). Using
  integers would be a reasonable option, but the performance boost is arguably
  offset by the legibility cost and the extra deviation from the JSON encoding
  convention.
  
  An integer representation can still be used (e.g. for compatibility with
  TypeScript `enum`s) by overriding the `EnumType` with a `LongType` (e.g. via
  `parse`'s registry).