def __init__(self, src, dst, indexes=None, virtualOnly=False,<EOL>parentStm=None,<EOL>sensitivity=None,<EOL>is_completly_event_dependent=False):
super(Assignment, self).__init__(<EOL>parentStm,<EOL>sensitivity,<EOL>is_completly_event_dependent)<EOL>self.src = src<EOL>isReal = not virtualOnly<EOL>if not isinstance(src, Value):<EOL><INDENT>self._inputs.append(src)<EOL>if isReal:<EOL><INDENT>src.endpoints.append(self)<EOL><DEDENT><DEDENT>self.dst = dst<EOL>if not isinstance(dst, Value):<EOL><INDENT>self._outputs.append(dst)<EOL>if isReal:<EOL><INDENT>dst.drivers.append(self)<EOL><DEDENT><DEDENT>self.indexes = indexes<EOL>if indexes:<EOL><INDENT>for i in indexes:<EOL><INDENT>if not isinstance(i, Value):<EOL><INDENT>self._inputs.append(i)<EOL>if isReal:<EOL><INDENT>i.endpoints.append(self)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>self._instId = Assignment._nextInstId()<EOL>if not virtualOnly:<EOL><INDENT>dst.ctx.statements.add(self)<EOL><DEDENT>
:param dst: destination to assign to
:param src: source which is assigned from
:param indexes: description of index selector on dst
    (list of Index/Slice objects) (f.e. [[0], [1]] means  dst[0][1])
:param virtualOnly: flag indicates that this assignments
    is only virtual and should not be added into
    netlist, because it is only for internal notation