// Path: src/main/java/net/liujiacai/jcscheme/type/JCBool.java
// public class JCBool extends JCObject {
//     private static JCBool trueVal = new JCBool(true);
//     private static JCBool falseVal = new JCBool(false);
//     private boolean value;
// 
//     private JCBool(boolean value) {
//         this.value = value;
//     }
// 
//     public static JCBool getInstance(boolean bool) {
//         if (bool) {
//             return trueVal;
//         } else {
//             return falseVal;
//         }
//     }
// 
//     public boolean getValue() {
//         return value;
//     }
// 
//     @Override
//     public String toString() {
//         return String.valueOf(value);
//     }
// 
// }
// 
// Path: src/main/java/net/liujiacai/jcscheme/type/JCNumber.java
// public class JCNumber extends JCObject {
// 
// 	private int value;
// 
// 	public int getValue() {
// 		return value;
// 	}
// 	public JCNumber(int value) {
// 		this.value = value;
// 	}
// 	@Override
// 	public String toString() {
// 		return String.valueOf(value);
// 	}
// 
// }
// 
// Path: src/main/java/net/liujiacai/jcscheme/type/JCObject.java
// public abstract class JCObject {
// 
// }


import net.liujiacai.jcscheme.type.JCBool;
import net.liujiacai.jcscheme.type.JCNumber;
import net.liujiacai.jcscheme.type.JCObject;
        }
        return new JCNumber(product);
    }

    public static JCNumber div(JCObject... args) {
        int quotient = ((JCNumber) args[0]).getValue();
        for (int i = 1; i < args.length; i++) {
            quotient *= ((JCNumber) args[i]).getValue();
        }
        return new JCNumber(quotient);
    }

    public static JCBool equalTo(JCObject... args) {
        int before = ((JCNumber) args[0]).getValue();

        for (int i = 1; i < args.length; i++) {
            int current = ((JCNumber) args[i]).getValue();
            if (before != current) {
                return JCBool.getInstance(false);
            }
            before = current;
        }
        return JCBool.getInstance(true);
    }

    public static JCBool lessThan(JCObject... args) {
        int before = ((JCNumber) args[0]).getValue();

        for (int i = 1; i < args.length; i++) {
            int current = ((JCNumber) args[i]).getValue();
// Path: src/main/java/net/liujiacai/jcscheme/type/JCBool.java
// public class JCBool extends JCObject {
//     private static JCBool trueVal = new JCBool(true);
//     private static JCBool falseVal = new JCBool(false);
//     private boolean value;
// 
//     private JCBool(boolean value) {
//         this.value = value;
//     }
// 
//     public static JCBool getInstance(boolean bool) {
//         if (bool) {
//             return trueVal;
//         } else {
//             return falseVal;
//         }
//     }
// 
//     public boolean getValue() {
//         return value;
//     }
// 
//     @Override
//     public String toString() {
//         return String.valueOf(value);
//     }
// 
// }
// 
// Path: src/main/java/net/liujiacai/jcscheme/type/JCNumber.java
// public class JCNumber extends JCObject {
// 
// 	private int value;
// 
// 	public int getValue() {
// 		return value;
// 	}
// 	public JCNumber(int value) {
// 		this.value = value;
// 	}
// 	@Override
// 	public String toString() {
// 		return String.valueOf(value);
// 	}
// 
// }
// 
// Path: src/main/java/net/liujiacai/jcscheme/type/JCObject.java
// public abstract class JCObject {
// 
// }


// Path: src/main/java/net/liujiacai/jcscheme/builtin/JCNumberFuncs.java
import net.liujiacai.jcscheme.type.JCBool;
import net.liujiacai.jcscheme.type.JCNumber;
import net.liujiacai.jcscheme.type.JCObject;

        }
        return new JCNumber(product);
    }

    public static JCNumber div(JCObject... args) {
        int quotient = ((JCNumber) args[0]).getValue();
        for (int i = 1; i < args.length; i++) {
            quotient *= ((JCNumber) args[i]).getValue();
        }
        return new JCNumber(quotient);
    }

    public static JCBool equalTo(JCObject... args) {
        int before = ((JCNumber) args[0]).getValue();

        for (int i = 1; i < args.length; i++) {
            int current = ((JCNumber) args[i]).getValue();
            if (before != current) {
                return JCBool.getInstance(false);
            }
            before = current;
        }
        return JCBool.getInstance(true);
    }

    public static JCBool lessThan(JCObject... args) {
        int before = ((JCNumber) args[0]).getValue();

        for (int i = 1; i < args.length; i++) {
            int current = ((JCNumber) args[i]).getValue();
            if (before > current) {