public override SucoExpression Optimize(SucoEnvironment env, int?[] givens) { var conditionOpt = Condition.Optimize(env, givens); if (conditionOpt is SucoConstant c) { return(c.Equals(true) ? True.Optimize(env, givens) : False.Optimize(env, givens)); } return(new SucoConditionalExpression(StartIndex, EndIndex, conditionOpt, True.Optimize(env, givens), False.Optimize(env, givens), Type)); }