private static Function _add(VariablesMulriplication vars1, VariablesMulriplication vars2)
        {
            List<FunctionElement> vars = new List<FunctionElement>();
            vars1.variables.ForEach(v => vars.Add(v.Clone() as FunctionElement));

            if (vars1.Equals(vars2))
            {
                return new Function(new VariablesMulriplication(vars.ToArray(), vars1.Constant + vars2.Constant));
            }

            List<FunctionElement> vars22 = new List<FunctionElement>();
            vars2.variables.ForEach(v => vars22.Add(v.Clone() as FunctionElement));
            return new Function(new VariablesMulriplication[]{
                new VariablesMulriplication(vars.ToArray(), vars1.Constant),
                new VariablesMulriplication(vars22.ToArray(), vars2.Constant)
            });
        }