"""A module that let you define functions with generator expressions."""
from symbolic import core


class Any(core.BaseType):
    """The most generic type."""
    def __setitem__(self, key, value):
        return self._array.__setitem__(key, value)

    def __repr__(self):
        return 'Any(%s)' % repr(self._array)


class System(core.BaseType):
    """A class that wrap a generator that have an system of
    equalities."""

    @helpers.cached_property
    def _expression(self):
        obj = super()._make_expression()
        return '|'.join(o._expression for o in obj) if hasattr(obj, '__iter__') \
        else obj._expression

    def __setitem__(self, key, value):
        return self._array.__setitem__(key, value)

    def __repr__(self):
        return 'System(%s)' % repr(self._array)
@@ -427,62 +427,52 @@
 %22%22%22%0A
-%0A    @helpers.cached_property%0A    def _expression(self
+    def __init__(self, system, *args, **kwds
 ):%0A 
@@ -481,14 +481,8 @@
     
- obj =
  sup
@@ -491,125 +491,79 @@
 ()._
-make_expression()%0A        return '%7C'.join(o._expression for o in obj) if hasattr(obj, '__iter__') %5C%0A        else obj.
+_init__(system, *args, **kwds)%0A        self._expression = super()._make
 _exp
@@ -569,16 +569,18 @@
 pression
+()
 %0A%0A    de

remove unnecessary method