fn string(&self) -> String {
        let mut buf = "if".to_owned();
        // TODO: match on condition and get it's Expression
        // buf += self.condition.string();
        buf += " ";
        // buf += self.consequence.string();
        // TODO: something besides nil
        // if self.alternative != nil {
        //     buf += " else ";
        //     buf += self.alternative.string();
        // }
        buf
    }
/// string - returns a string representation of the IfExpression and satisfies our Node interface
returns a string representation of the IfExpression and satisfies our Node interface
returns a string representation of the IfExpression and satisfies our Node interface
fn string(&self) -> String {
        let mut buf = "if".to_owned();
        // TODO: match on condition and get it's Expression
        // buf += self.condition.string();
        buf += " ";
        // buf += self.consequence.string();
        // TODO: something besides nil
        // if self.alternative != nil {
        //     buf += " else ";
        //     buf += self.alternative.string();
        // }
        buf
    }
fn string ( & self ) -> String { let mut buf = " " . to_owned ( ) ; // TODO: match on condition and get it's Expression // buf += self.condition.string(); buf += " " ; // buf += self.consequence.string(); // TODO: something besides nil // if self.alternative != nil { //     buf += " else "; //     buf += self.alternative.string(); // } buf }
string - returns a string representation of the IfExpression and satisfies our Node interface
string - returns a string representation of the IfExpression and satisfies our Node interface
&self
&self