'Return a new variable.
Parameters
name : Symbol, MatrixSymbol
The name of this variable.  When used for code generation, this
might appear, for example, in the prototype of function in the
argument list.
result_var : Symbol, Indexed
Something that can be used to assign a value to this variable.
Typically the same as `name` but for Indexed this should be e.g.,
"y[i]" whereas `name` should be the Symbol "y".
expr : object
The expression that should be output, typically a SymPy
expression.
datatype : optional
When not given, the data type will be guessed based on the
assumptions on the symbol argument.
dimension : sequence containing tupes, optional
If present, the argument is interpreted as an array, where this
sequence of tuples specifies (lower, upper) bounds for each
index of the array.
precision : int, optional
Controls the precision of floating point constants.'

def __init__(self, name, result_var, expr, datatype=None, dimensions=None, precision=None):

    Argument.__init__(self, name, datatype, dimensions, precision)
    ResultBase.__init__(self, expr, result_var)
