class HistoryDTO implements JSONable {
        @JsonProperty
        private final List<HistoryEntryDTO> entries;
        @JsonProperty
        private int start;
        @JsonProperty
        private int count;
        @JsonProperty
        private int total;

        @TestOnly
        HistoryDTO() {
            this.entries = new ArrayList<>();
        }

        HistoryDTO(List<HistoryEntryDTO> entries, int start, int count, int total) {
            this.entries = entries;
            this.start = start;
            this.count = count;
            this.total = total;
        }

        @TestOnly
        public List<HistoryEntryDTO> getEntries() {
            return entries;
        }

        public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}

        @Override
        public int hashCode() {
            return Objects.hash(entries, start, count, total);
        }
    }

            return Optional.ofNullable(obj)
                    .filter(other -> getClass() == other.getClass())
                    .map(HistoryDTO.class::cast)
                    .filter(other -> Objects.equals(this.entries, other.entries))
                    .filter(other -> Objects.equals(this.start, other.start))
                    .filter(other -> Objects.equals(this.count, other.count))
                    .filter(other -> Objects.equals(this.total, other.total))
                    .isPresent();
        
<no_super_class>