@Override
    public int hashCode() {
        int result;
        long temp;
        result = (int) (id ^ (id >>> 32));
        result = 31 * result + (int) (version ^ (version >>> 32));
        result = 31 * result + (int) (problemId ^ (problemId >>> 32));
        result = 31 * result + (submission != null ? submission.hashCode() : 0);
        result = 31 * result + (int) evaluation;
        result = 31 * result + (submissionDate != null ? submissionDate.hashCode() : 0);
        result = 31 * result + (detailedLog ? 1 : 0);
        result = 31 * result + (diffFile != null ? diffFile.hashCode() : 0);
        result = 31 * result + (int) (languageId ^ (languageId >>> 32));
        result = 31 * result + tries;
        result = 31 * result + (output != null ? output.hashCode() : 0);
        result = 31 * result + (int) (userId ^ (userId >>> 32));
        temp = Double.doubleToLongBits(time);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        result = 31 * result + (problem != null ? problem.hashCode() : 0);
        result = 31 * result + (language != null ? language.hashCode() : 0);
        result = 31 * result + (inputTestCase != null ? inputTestCase.hashCode() : 0);
        result = 31 * result + (errorMsg != null ? errorMsg.hashCode() : 0);
        result = 31 * result + (int) (idTestCase ^ (idTestCase >>> 32));
        return result;
    }