def determine_result(self, returncode, returnsignal, output, isTimeout):
        """
        Parse the output of the tool and extract the verification result.
        This method always needs to be overridden.
        If the tool gave a result, this method needs to return one of the
        benchexec.result.RESULT_* strings.
        Otherwise an arbitrary string can be returned that will be shown to the user
        and should give some indication of the failure reason
        (e.g., "CRASH", "OUT_OF_MEMORY", etc.).
        """

        if not output:
            return 'ERROR - no output'

        last = output[-1]

        if isTimeout:
            return 'TIMEOUT'

        if returncode != 0:
            return 'ERROR - {0}'.format( last )

        if 'result:' in last:
            res = last.split(':', maxsplit=1)[1].strip()
            return self.RESMAP.get( res, result.RESULT_UNKNOWN );
        else:
            return 'UNKNOWN ERROR'