def validate(self, input, is_substitute): 
constraint = self.__get_constraint(input)<EOL>to_validate = self.__get_to_validate(input)<EOL>return self.__compare(to_validate, constraint)<EOL>
Performs validation
:param input: object to validate
:param is_substitute: will be used for what-if in the future
:return: validation result if violated or None