# Path: commands/core.py
# class Resolvable(metaclass=abc.ABCMeta):
# 
#     @abc.abstractmethod
#     def resolve(self, scope):
#         pass
# 
# class Command(Resolvable):
#     pass
# 
# class EntityRef(Resolvable, metaclass=abc.ABCMeta):
# 
#     @abc.abstractmethod
#     def is_single_entity(self, scope):
#         pass
# 
#     @property
#     def ref(self):
#         from .nbt import EntityReference
#         return EntityReference(self)
# 
# class WorldPos(Resolvable):
# 
#     def __init__(self, x, y, z, block_pos=False):
#         is_anchor = self._check_coord(x, True, not block_pos)
#         was_anchor = self._check_coord(y, is_anchor, not block_pos)
#         is_anchor = self._check_coord(z, was_anchor, not block_pos)
#         if was_anchor:
#             assert is_anchor
#         self.x, self.y, self.z = x, y, z
#         self.block_pos = block_pos
# 
#     def _check_coord(self, val, allow_anchor, allow_float):
#         if isinstance(val, AnchorRelCoord):
#             assert allow_anchor
#             return True
#         if type(val) == float:
#             assert allow_float
#             return False
#         if type(val) == int:
#             return False
#         if isinstance(val, WorldRelCoord):
#             return False
#         assert False, val
# 
#     @property
#     def ref(self):
#         from .nbt import BlockReference
#         return BlockReference(self)
# 
#     def resolve(self, scope):
#         return '%s %s %s' % (self.x, self.y, self.z)


from .core import Resolvable, Command, EntityRef, WorldPos
        return 'block %s' % self.pos.resolve(scope)

    def as_text(self, scope):
        return {'block': self.pos.resolve(scope)}

class Storage(NBTStorable):

    def __init__(self, namespace=None):
        self.namespace = namespace

    def resolve(self, scope):
        return 'storage %s' % scope.storage(self.namespace)

    def as_text(self, scope):
        return {'storage': scope.storage(self.namespace)}

class GlobalNBT(NBTStorable):

    def __init__(self, namespace):
        self.namespace = namespace

    def proxy(self, scope):
        return scope.global_nbt(self.namespace)

    def resolve(self, scope):
        return self.proxy(scope).resolve(scope)

    def as_text(self, scope):
        return self.proxy(scope).as_text(scope)


# Path: commands/core.py
# class Resolvable(metaclass=abc.ABCMeta):
# 
#     @abc.abstractmethod
#     def resolve(self, scope):
#         pass
# 
# class Command(Resolvable):
#     pass
# 
# class EntityRef(Resolvable, metaclass=abc.ABCMeta):
# 
#     @abc.abstractmethod
#     def is_single_entity(self, scope):
#         pass
# 
#     @property
#     def ref(self):
#         from .nbt import EntityReference
#         return EntityReference(self)
# 
# class WorldPos(Resolvable):
# 
#     def __init__(self, x, y, z, block_pos=False):
#         is_anchor = self._check_coord(x, True, not block_pos)
#         was_anchor = self._check_coord(y, is_anchor, not block_pos)
#         is_anchor = self._check_coord(z, was_anchor, not block_pos)
#         if was_anchor:
#             assert is_anchor
#         self.x, self.y, self.z = x, y, z
#         self.block_pos = block_pos
# 
#     def _check_coord(self, val, allow_anchor, allow_float):
#         if isinstance(val, AnchorRelCoord):
#             assert allow_anchor
#             return True
#         if type(val) == float:
#             assert allow_float
#             return False
#         if type(val) == int:
#             return False
#         if isinstance(val, WorldRelCoord):
#             return False
#         assert False, val
# 
#     @property
#     def ref(self):
#         from .nbt import BlockReference
#         return BlockReference(self)
# 
#     def resolve(self, scope):
#         return '%s %s %s' % (self.x, self.y, self.z)


# Path: commands/nbt.py
from .core import Resolvable, Command, EntityRef, WorldPos

        return 'block %s' % self.pos.resolve(scope)

    def as_text(self, scope):
        return {'block': self.pos.resolve(scope)}

class Storage(NBTStorable):

    def __init__(self, namespace=None):
        self.namespace = namespace

    def resolve(self, scope):
        return 'storage %s' % scope.storage(self.namespace)

    def as_text(self, scope):
        return {'storage': scope.storage(self.namespace)}

class GlobalNBT(NBTStorable):

    def __init__(self, namespace):
        self.namespace = namespace

    def proxy(self, scope):
        return scope.global_nbt(self.namespace)

    def resolve(self, scope):
        return self.proxy(scope).resolve(scope)

    def as_text(self, scope):
        return self.proxy(scope).as_text(scope)


class DataGet(Command):