All the require calls are made to validate input. assert and revert are not used in the project.
All the modifier are used for validation of data. They are all using a require and running the function if it passes.
All the function names have distinctive names, not resembling any variable that could be shadowed
The contract doesn't use tx.origin in any of the code. It uses msg.sender instead.