anchor.diff:  
   MonkeyObject evalIfExpression(IfExpression expression) {
     MonkeyObject condition = eval(expression.condition);
  +  if (isError(condition)) {
  +    return condition;
  +  }
  +
     if (isTruthy(condition)) {
       return eval(expression.consequence);
     } else if (expression.alternative != null) {
  
positive.code:   } else if (node is BooleanLiteral) {
      return nativeBoolToBooleanObject(node.value);
    } else if (node is PrefixExpression) {
      return evalPrefixExpression(node.operator, eval(node.right));
    } else if (node is InfixExpression) {
      var left = eval(node.left);
      var right = eval(node.right);
      return evalInfixExpression(node.operator, left, right);
    } else if (node is BlockStatement) {
      return evalBlockStatement(node);
    } else if (node is IfExpression) {
      return evalIfExpression(node);
    } else if (node is ReturnStatement) {
      return new ReturnValue(eval(node.returnValue));
    }
    return null;
  }
  
negative.code:   }
    return result;
  }
  
  bool isError(MonkeyObject object) {
    if (object != null) {
      return object.type == ERROR_OBJ;
    }
    return false;
  }
  