Refactoring, JavaDoc and minor improvements

- Only work with compaible functions
- Solve error with expressions of the form "func(part_column) op exp"