# Path: consort/tools/HashCachingObject.py
# class HashCachingObject(abctools.AbjadValueObject):
# 
#     ### CLASS VARIABLES ###
# 
#     __slots__ = (
#         '_format',
#         '_hash',
#         )
# 
#     ### INITIALIZER ###
# 
#     def __init__(self):
#         self._format = None
#         self._hash = None
# 
#     ### SPECIAL METHODS ###
# 
#     #@profile
#     def __eq__(self, expr):
#         if isinstance(expr, type(self)):
#             if format(self) == format(expr):
#                 return True
#         return False
# 
#     #@profile
#     def __format__(self, format_specification=''):
#         if self._format is None:
#             agent = systemtools.StorageFormatAgent(self)
#             self._format = agent.get_storage_format()
#         return self._format
# 
#     #@profile
#     def __hash__(self):
#         if self._hash is None:
#             self._hash = hash((type(self), format(self)))
#         return self._hash


import abjad
from abjad import attach
from abjad import inspect
from abjad import mutate
from abjad import select
from abjad.tools import durationtools
from abjad.tools import selectiontools
from consort.tools.HashCachingObject import HashCachingObject


class LeafExpression(HashCachingObject):

    ### CLASS VARIABLES ###

    __slots__ = (
        '_attachments',
        '_leaf',
        )

    ### INITIALIZER ###

    def __init__(
        self,
        leaf=None,
        attachments=None,
        ):

# Path: consort/tools/HashCachingObject.py
# class HashCachingObject(abctools.AbjadValueObject):
# 
#     ### CLASS VARIABLES ###
# 
#     __slots__ = (
#         '_format',
#         '_hash',
#         )
# 
#     ### INITIALIZER ###
# 
#     def __init__(self):
#         self._format = None
#         self._hash = None
# 
#     ### SPECIAL METHODS ###
# 
#     #@profile
#     def __eq__(self, expr):
#         if isinstance(expr, type(self)):
#             if format(self) == format(expr):
#                 return True
#         return False
# 
#     #@profile
#     def __format__(self, format_specification=''):
#         if self._format is None:
#             agent = systemtools.StorageFormatAgent(self)
#             self._format = agent.get_storage_format()
#         return self._format
# 
#     #@profile
#     def __hash__(self):
#         if self._hash is None:
#             self._hash = hash((type(self), format(self)))
#         return self._hash


# Path: consort/tools/LeafExpression.py
import abjad
from abjad import attach
from abjad import inspect
from abjad import mutate
from abjad import select
from abjad.tools import durationtools
from abjad.tools import selectiontools
from consort.tools.HashCachingObject import HashCachingObject



class LeafExpression(HashCachingObject):

    ### CLASS VARIABLES ###

    __slots__ = (
        '_attachments',
        '_leaf',
        )

    ### INITIALIZER ###

    def __init__(
        self,
        leaf=None,
        attachments=None,
        ):

        HashCachingObject.__init__(self)