class ShardsAcknowledgedResponse extends AcknowledgedResponse {

    private final boolean shardsAcknowledged;

    protected ShardsAcknowledgedResponse(boolean acknowledged, boolean shardsAcknowledged) {
        super(acknowledged);
        assert acknowledged || shardsAcknowledged == false; // if it's not acknowledged, then shards acked should be false too
        this.shardsAcknowledged = shardsAcknowledged;
    }

    /**
     * Returns true if the requisite number of shards were started before
     * returning from the index creation operation. If {@link #isAcknowledged()}
     * is false, then this also returns false.
     */
    public boolean isShardsAcknowledged() {
        return shardsAcknowledged;
    }

    protected ShardsAcknowledgedResponse(StreamInput in) throws IOException {
        super(in);
        shardsAcknowledged = in.readBoolean();
    }

    @Override
    public void writeTo(StreamOutput out) throws IOException {
        super.writeTo(out);
        out.writeBoolean(shardsAcknowledged);
    }

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

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), shardsAcknowledged);
    }
}

        if (super.equals(o)) {
            ShardsAcknowledgedResponse that = (ShardsAcknowledgedResponse) o;
            return shardsAcknowledged == that.shardsAcknowledged;
        }
        return false;
    
<methods>public void <init>(boolean) ,public void <init>(org.elasticsearch.common.io.stream.StreamInput) throws java.io.IOException,public boolean equals(java.lang.Object) ,public int hashCode() ,public final boolean isAcknowledged() ,public void writeTo(org.elasticsearch.common.io.stream.StreamOutput) throws java.io.IOException<variables>protected final non-sealed boolean acknowledged