static DotNetObject()
{
binaryMethods["+"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Add(obj, args[0]));
binaryMethods["-"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Substract(obj, args[0]));
binaryMethods["*"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Multiply(obj, args[0]));
binaryMethods["/"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Divide(obj, args[0]));
binaryMethods["<"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Less(obj, args[0]));
binaryMethods[">"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Greater(obj, args[0]));
binaryMethods["<="] = new FunctionalMethod((machine, obj, args) => ObjectOperators.LessEqual(obj, args[0]));
binaryMethods[">="] = new FunctionalMethod((machine, obj, args) => ObjectOperators.GreaterEqual(obj, args[0]));
binaryMethods["="] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Equals(obj, args[0]));
binaryMethods["~="] = new FunctionalMethod((machine, obj, args) => !ObjectOperators.Equals(obj, args[0]));
binaryMethods["=="] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Same(obj, args[0]));
binaryMethods["~~"] = new FunctionalMethod((machine, obj, args) => !ObjectOperators.Same(obj, args[0]));
binaryMethods["nat"] = new FunctionalMethod(AtMethod);
binaryMethods["nget"] = new FunctionalMethod(GetMethod);
unaryMethods["minus"] = new FunctionalMethod((machine, obj, args) => ObjectOperators.Negate(obj));
ternaryMethods["natput"] = new FunctionalMethod(AtPutMethod);
ternaryMethods["nsetput"] = new FunctionalMethod(SetPutMethod);
ternaryMethods["ngetat"] = new FunctionalMethod(GetAtMethod);
cuaternaryMethods["nsetatput"] = new FunctionalMethod(SetAtPutMethod);
}