class OperationContext {

    public final int id;
    public final UUID jobId;
    public final String name;

    public final long started;
    private final LongSupplier bytesUsed;

    public OperationContext(int id, UUID jobId, String name, long started, LongSupplier bytesUsed) {
        this.id = id;
        this.jobId = jobId;
        this.name = name;
        this.started = started;
        this.bytesUsed = bytesUsed;
    }

    public int id() {
        return id;
    }

    public UUID jobId() {
        return jobId;
    }

    public String name() {
        return name;
    }

    public long started() {
        return started;
    }

    public long usedBytes() {
        return bytesUsed.getAsLong();
    }

    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
        return Objects.hash(id, jobId);
    }
}

        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        OperationContext that = (OperationContext) o;
        if (id != that.id) return false;
        return jobId.equals(that.jobId);
    
<no_super_class>