class Expression implements Cloneable {

    public static Expression compile(String expression, String... variableNames) throws ExpressionException {
        return new Expression(expression, variableNames);
    }

    private  Expression(String expression, String... variableNames);
    private  Expression(String expression, Set<String> variableNames);

}