// Path: src/main/java/com/yanglinkui/ab/dsl/Number.java
// public class Number implements Value<BigDecimal> {
// 
//     private final BigDecimal value;
// 
//     public Number(BigDecimal value) {
//         this.value = value;
//     }
// 
//     public BigDecimal getValue() {
//         return this.value;
//     }
// 
//     @Override
//     public String toString() {
//         return "Number: " + this.value;
//     }
// }


import com.yanglinkui.ab.dsl.*;
import com.yanglinkui.ab.dsl.Number;
import java.math.BigDecimal;
import java.util.HashSet;
        return new LessEqual();
    }

    Value value() {
        if (LA(1) == ConditionToken.TOKEN_NUMBER || LA(1) == ConditionToken.TOKEN_STRING) {
            return element();
        } else {
            match(ConditionToken.TOKEN_LSBRACK);
            Value value = elements();
            match(ConditionToken.TOKEN_RSBRACK);

            return value;
        }
    }

    Array elements() {
        HashSet<Value> list = new HashSet<Value>();

        list.add(element());
        while (LA(1) == ConditionToken.TOKEN_COMMA) {
            match(ConditionToken.TOKEN_COMMA);
            list.add(element());
        }

        return new Array(list);
    }

    Value element() {
        if (LA(1) == ConditionToken.TOKEN_NUMBER) {
            Token t = match(ConditionToken.TOKEN_NUMBER);
// Path: src/main/java/com/yanglinkui/ab/dsl/Number.java
// public class Number implements Value<BigDecimal> {
// 
//     private final BigDecimal value;
// 
//     public Number(BigDecimal value) {
//         this.value = value;
//     }
// 
//     public BigDecimal getValue() {
//         return this.value;
//     }
// 
//     @Override
//     public String toString() {
//         return "Number: " + this.value;
//     }
// }


// Path: src/main/java/com/yanglinkui/ab/dsl/condition/ConditionParser.java
import com.yanglinkui.ab.dsl.*;
import com.yanglinkui.ab.dsl.Number;
import java.math.BigDecimal;
import java.util.HashSet;

        return new LessEqual();
    }

    Value value() {
        if (LA(1) == ConditionToken.TOKEN_NUMBER || LA(1) == ConditionToken.TOKEN_STRING) {
            return element();
        } else {
            match(ConditionToken.TOKEN_LSBRACK);
            Value value = elements();
            match(ConditionToken.TOKEN_RSBRACK);

            return value;
        }
    }

    Array elements() {
        HashSet<Value> list = new HashSet<Value>();

        list.add(element());
        while (LA(1) == ConditionToken.TOKEN_COMMA) {
            match(ConditionToken.TOKEN_COMMA);
            list.add(element());
        }

        return new Array(list);
    }

    Value element() {
        if (LA(1) == ConditionToken.TOKEN_NUMBER) {
            Token t = match(ConditionToken.TOKEN_NUMBER);
            return new Number(new BigDecimal(t.getText()));