pub fn evaluate( node: Node, heap: &mut Heap, env: &mut Environment<String> ) -> Result<Option<Object>, EvalError>