+Object {
	valueFuncProxy {
		^this
	}
	
	reduceFuncProxy {
		^this
	}
	
	postString {
		^this.asString
	}
}

+AbstractFunction {
	reduceFuncProxy { arg args;
		^this.valueArray(args).valueFuncProxy(args)
	}
	
}

+Function {
	postString {
		^this.asCompileString
	}
}
+UnaryOpFunctionProxy {
	postString {
		^a.postString ++ "." ++ selector
	}
}
+BinaryOpFunctionProxy {
	postString {
		^a.postString + selector.asBinOpString + b.postString
	}
}