public boolean compareExpressions(Statement s1, Statement s2) {
        if(s1.baseOperation.equals(s2.baseOperation)) {
            switch (s1.baseOperation) {
                case BINATY_OPERATION: {
                    BinaryOperationStatement bos1 = (BinaryOperationStatement)s1;
                    BinaryOperationStatement bos2 = (BinaryOperationStatement)s2;
                    if(bos1.operation.toString().compareTo(bos2.operation.toString()) == 0
                            && bos1.rightOperand.toString().compareTo(bos2.rightOperand.toString()) == 0
                            && bos1.leftOperand.toString().compareTo(bos2.leftOperand.toString()) == 0) {
                        return true;
                    }
                    return false;
                }
                case UNARY_OPERATION: {
                    UnaryOperationStatement u1 = (UnaryOperationStatement)s1;
                    UnaryOperationStatement u2 = (UnaryOperationStatement)s2;
                    if(u1.rhv.toString().compareTo(u2.rhv.toString()) ==0 &&
                            u1.operation.toString().compareTo(u2.operation.toString()) ==0)
                        return true;
                    return false;
                }
                default:
                    return false;
            }
        }
        return false;
    }