class NullMeta(type):
    def __instancecheck__(cls, instance):
        return instance is None

class NullType(object):
    __metaclass__ = NullMeta
    def __new__(cls, value, *p, **k):
        return value if value is not None \
            else object.__new__(cls, *p, **k)
    def __call__(self, *arg, **kw): return self
    def __getattr__(self, attr): return self
    def __getitem__(self, item): return self
    def __len__(self): return 0
    def __str__(self): return ''
    def __repr__(self): return 'Null'
    def __nonzero__(self): return False
    def __eq__(self, other): return isinstance(other, NullType)
    def __ne__(self, other): return not isinstance(other, NullType)
    def __iter__(self): return iter(())

Maybe=NullType

def Value(value):
    return None if isinstance(value, NullType) else value

ea3f3531dd86e8661e4e67ebb07af9e55e0114d4
<mask token>


class NullType(object):
    <mask token>
    <mask token>
    <mask token>

    def __getattr__(self, attr):
        return self

    def __getitem__(self, item):
        return self

    def __len__(self):
        return 0

    def __str__(self):
        return ''
    <mask token>
    <mask token>

    def __eq__(self, other):
        return isinstance(other, NullType)

    def __ne__(self, other):
        return not isinstance(other, NullType)
    <mask token>


<mask token>

<mask token>


class NullType(object):
    __metaclass__ = NullMeta

    def __new__(cls, value, *p, **k):
        return value if value is not None else object.__new__(cls, *p, **k)

    def __call__(self, *arg, **kw):
        return self

    def __getattr__(self, attr):
        return self

    def __getitem__(self, item):
        return self

    def __len__(self):
        return 0

    def __str__(self):
        return ''

    def __repr__(self):
        return 'Null'

    def __nonzero__(self):
        return False

    def __eq__(self, other):
        return isinstance(other, NullType)

    def __ne__(self, other):
        return not isinstance(other, NullType)

    def __iter__(self):
        return iter(())


<mask token>

class NullMeta(type):

    def __instancecheck__(cls, instance):
        return instance is None


class NullType(object):
    __metaclass__ = NullMeta

    def __new__(cls, value, *p, **k):
        return value if value is not None else object.__new__(cls, *p, **k)

    def __call__(self, *arg, **kw):
        return self

    def __getattr__(self, attr):
        return self

    def __getitem__(self, item):
        return self

    def __len__(self):
        return 0

    def __str__(self):
        return ''

    def __repr__(self):
        return 'Null'

    def __nonzero__(self):
        return False

    def __eq__(self, other):
        return isinstance(other, NullType)

    def __ne__(self, other):
        return not isinstance(other, NullType)

    def __iter__(self):
        return iter(())


<mask token>

class NullMeta(type):

    def __instancecheck__(cls, instance):
        return instance is None


class NullType(object):
    __metaclass__ = NullMeta

    def __new__(cls, value, *p, **k):
        return value if value is not None else object.__new__(cls, *p, **k)

    def __call__(self, *arg, **kw):
        return self

    def __getattr__(self, attr):
        return self

    def __getitem__(self, item):
        return self

    def __len__(self):
        return 0

    def __str__(self):
        return ''

    def __repr__(self):
        return 'Null'

    def __nonzero__(self):
        return False

    def __eq__(self, other):
        return isinstance(other, NullType)

    def __ne__(self, other):
        return not isinstance(other, NullType)

    def __iter__(self):
        return iter(())


Maybe = NullType


def Value(value):
    return None if isinstance(value, NullType) else value

class NullMeta(type):
    def __instancecheck__(cls, instance):
        return instance is None

class NullType(object):
    __metaclass__ = NullMeta
    def __new__(cls, value, *p, **k):
        return value if value is not None \
            else object.__new__(cls, *p, **k)
    def __call__(self, *arg, **kw): return self
    def __getattr__(self, attr): return self
    def __getitem__(self, item): return self
    def __len__(self): return 0
    def __str__(self): return ''
    def __repr__(self): return 'Null'
    def __nonzero__(self): return False
    def __eq__(self, other): return isinstance(other, NullType)
    def __ne__(self, other): return not isinstance(other, NullType)
    def __iter__(self): return iter(())

Maybe=NullType

def Value(value):
    return None if isinstance(value, NullType) else value
