public override IElement Action(ArgumentContainer Args) { var cond = Args.GetRawArgument("if", true); var then = Args.GetRawArgument("then", true); var el = Args.GetRawArgument("else", true); if (cond == null) { return(new Noop()); } if (then == null) { throw new TypeException("IF must recieve at least 2 parameters!"); } var testResult = Interpreter.VisitAndGetResult(cond); if (testResult is TrueFalse tf) { if (tf.Value == true) { return(Interpreter.VisitAndGetResult(then)); } else if (el != null) { return(Interpreter.VisitAndGetResult(el)); } } else { throw new TypeException("Returned value to IF was not a boolean value!"); } return(new Noop()); }