def METHOD_NAME(self, run):
    if not run.output:
        return f"{result.RESULT_ERROR}(no output)"
    if self._version_newer_than("4.0.1"):
        for line in run.output:
            line = line.strip()
            if line == "RESULT: true":
                return result.RESULT_TRUE_PROP
            elif line == "RESULT: unknown":
                return result.RESULT_UNKNOWN
            elif line == "RESULT: done":
                return result.RESULT_DONE
            elif line.startswith("RESULT: false(valid-deref)"):
                return result.RESULT_FALSE_DEREF
            elif line.startswith("RESULT: false(valid-free)"):
                return result.RESULT_FALSE_FREE
            elif line.startswith("RESULT: false(valid-memtrack)"):
                return result.RESULT_FALSE_MEMTRACK
            elif line.startswith("RESULT: false(valid-memcleanup)"):
                return result.RESULT_FALSE_MEMCLEANUP
            elif line.startswith("RESULT: false(no-overflow)"):
                return result.RESULT_FALSE_OVERFLOW
            elif line.startswith("RESULT: false(termination)"):
                return result.RESULT_FALSE_TERMINATION
            elif line.startswith("RESULT: false"):
                return result.RESULT_FALSE_REACH
    else:
        # old version of Symbiotic
        return OldSymbiotic.METHOD_NAME(self, run)
    if run.was_timeout:
        return self._getPhase(run.output)  # generates TIMEOUT(phase)
    elif run.exit_code.signal:
        return (
            f"KILLED (signal {run.exit_code.signal}, {self._getPhase(run.output)})"
        )
    elif run.exit_code.value != 0:
        return (
            f"{result.RESULT_ERROR}"
            f"(returned {run.exit_code.value}, {self._getPhase(run.output)})"
        )
    return f"{result.RESULT_ERROR}(unknown, {self._getPhase(run.output)})"