class VerificationResult {

    private final String description;

    private final String action;

    // if OK
    private VerificationResult() {
        this.description = "";
        this.action = "";
    }

    // if not OK
    private VerificationResult(String errorDescription, String action) {
        this.description = errorDescription;
        this.action = action;
    }

    public static VerificationResult compatible() {
        return new VerificationResult();
    }

    public static VerificationResult notCompatible(String errorDescription, String action) {
        return new VerificationResult(errorDescription, action);
    }

    public boolean isNotCompatible() {
        return StringUtils.hasText(this.description) || StringUtils.hasText(this.action);
    }

    public String toErrorMessage() {<FILL_FUNCTION_BODY>}

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof VerificationResult that)) {
            return false;
        }
        return description.equals(that.description) && action.equals(that.action);
    }

    @Override
    public int hashCode() {
        return Objects.hash(description, action);
    }
}

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("\n");
        stringBuilder.append("VerificationResult:");
        stringBuilder.append("\n");
        stringBuilder.append("—— description: ");
        stringBuilder.append(description);
        stringBuilder.append("\n");
        stringBuilder.append("—— action: ");
        stringBuilder.append(action);
        return stringBuilder.toString();
    
<no_super_class>