# Path: fastavro/io/symbols.py
# class _NoDefault:
# class Symbol:
# class Root(Symbol):
# class Terminal(Symbol):
# class Sequence(Symbol):
# class Repeater(Symbol):
# class Alternative(Symbol):
# class Action(Symbol):
# class EnumLabels(Action):
# class UnionEnd(Action):
# class RecordStart(Action):
# class RecordEnd(Action):
# class FieldStart(Action):
# class FieldEnd(Action):
# NO_DEFAULT = _NoDefault()
#     def __init__(self, production=None, default=NO_DEFAULT):
#     def get_default(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __init__(self, *symbols, default=NO_DEFAULT):
#     def __init__(self, end, *symbols, default=NO_DEFAULT):
#     def __init__(self, symbols, labels, default=NO_DEFAULT):
#     def get_symbol(self, index):
#     def get_label(self, index):
#     def __init__(self, labels):
#     def __init__(self, field_name):
# 
# Path: fastavro/schema.py
# FINGERPRINT_ALGORITHMS = _schema.FINGERPRINT_ALGORITHMS


from .symbols import (
    Root,
    Terminal,
    Boolean,
    Sequence,
    Repeater,
    Action,
    RecordStart,
    RecordEnd,
    FieldStart,
    FieldEnd,
    Int,
    Null,
    String,
    Alternative,
    Union,
    Long,
    Float,
    Double,
    Bytes,
    MapEnd,
    MapStart,
    MapKeyMarker,
    Enum,
    EnumLabels,
    Fixed,
    ArrayStart,
    ArrayEnd,
    ItemEnd,
    NO_DEFAULT,
)
from ..schema import extract_record_type
                    labels.append(candidate_schema)

            return Sequence(Alternative(symbols, labels, default=default), Union())

        elif record_type == "map":
            repeat = Repeater(
                MapEnd(),
                # ItemEnd(),  # TODO: Maybe need this?
                self._parse(schema["values"]),
                MapKeyMarker(),
                String(),
            )
            return Sequence(repeat, MapStart(default=default))

        elif record_type == "array":
            repeat = Repeater(
                ArrayEnd(),
                ItemEnd(),
                self._parse(schema["items"]),
            )
            return Sequence(repeat, ArrayStart(default=default))

        elif record_type == "enum":
            return Sequence(EnumLabels(schema["symbols"]), Enum(default=default))

        elif record_type == "null":
            return Null()
        elif record_type == "boolean":
            return Boolean(default=default)
        elif record_type == "string":

# Path: fastavro/io/symbols.py
# class _NoDefault:
# class Symbol:
# class Root(Symbol):
# class Terminal(Symbol):
# class Sequence(Symbol):
# class Repeater(Symbol):
# class Alternative(Symbol):
# class Action(Symbol):
# class EnumLabels(Action):
# class UnionEnd(Action):
# class RecordStart(Action):
# class RecordEnd(Action):
# class FieldStart(Action):
# class FieldEnd(Action):
# NO_DEFAULT = _NoDefault()
#     def __init__(self, production=None, default=NO_DEFAULT):
#     def get_default(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
#     def __init__(self, *symbols, default=NO_DEFAULT):
#     def __init__(self, end, *symbols, default=NO_DEFAULT):
#     def __init__(self, symbols, labels, default=NO_DEFAULT):
#     def get_symbol(self, index):
#     def get_label(self, index):
#     def __init__(self, labels):
#     def __init__(self, field_name):
# 
# Path: fastavro/schema.py
# FINGERPRINT_ALGORITHMS = _schema.FINGERPRINT_ALGORITHMS


# Path: fastavro/io/parser.py
from .symbols import (
    Root,
    Terminal,
    Boolean,
    Sequence,
    Repeater,
    Action,
    RecordStart,
    RecordEnd,
    FieldStart,
    FieldEnd,
    Int,
    Null,
    String,
    Alternative,
    Union,
    Long,
    Float,
    Double,
    Bytes,
    MapEnd,
    MapStart,
    MapKeyMarker,
    Enum,
    EnumLabels,
    Fixed,
    ArrayStart,
    ArrayEnd,
    ItemEnd,
    NO_DEFAULT,
)
from ..schema import extract_record_type

                    labels.append(candidate_schema)

            return Sequence(Alternative(symbols, labels, default=default), Union())

        elif record_type == "map":
            repeat = Repeater(
                MapEnd(),
                # ItemEnd(),  # TODO: Maybe need this?
                self._parse(schema["values"]),
                MapKeyMarker(),
                String(),
            )
            return Sequence(repeat, MapStart(default=default))

        elif record_type == "array":
            repeat = Repeater(
                ArrayEnd(),
                ItemEnd(),
                self._parse(schema["items"]),
            )
            return Sequence(repeat, ArrayStart(default=default))

        elif record_type == "enum":
            return Sequence(EnumLabels(schema["symbols"]), Enum(default=default))

        elif record_type == "null":
            return Null()
        elif record_type == "boolean":
            return Boolean(default=default)
        elif record_type == "string":

            return String(default=default)