class BagOfPrimitives {
  public static final long DEFAULT_VALUE = 0;
  public long longValue;
  public int intValue;
  public boolean booleanValue;
  public String stringValue;

  public BagOfPrimitives() {
    this(DEFAULT_VALUE, 0, false, "");
  }

  public BagOfPrimitives(long longValue, int intValue, boolean booleanValue, String stringValue) {
    this.longValue = longValue;
    this.intValue = intValue;
    this.booleanValue = booleanValue;
    this.stringValue = stringValue;
  }

  public int getIntValue() {
    return intValue;
  }

  public String getExpectedJson() {
    return "{"
        + "\"longValue\":"
        + longValue
        + ","
        + "\"intValue\":"
        + intValue
        + ","
        + "\"booleanValue\":"
        + booleanValue
        + ","
        + "\"stringValue\":\""
        + stringValue
        + "\""
        + "}";
  }

  @Override
  public int hashCode() {<FILL_FUNCTION_BODY>}

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof BagOfPrimitives)) {
      return false;
    }
    BagOfPrimitives that = (BagOfPrimitives) o;
    return longValue == that.longValue
        && intValue == that.intValue
        && booleanValue == that.booleanValue
        && Objects.equal(stringValue, that.stringValue);
  }

  @Override
  public String toString() {
    return String.format(
        "(longValue=%d,intValue=%d,booleanValue=%b,stringValue=%s)",
        longValue, intValue, booleanValue, stringValue);
  }
}

    final int prime = 31;
    int result = 1;
    result = prime * result + (booleanValue ? 1231 : 1237);
    result = prime * result + intValue;
    result = prime * result + (int) (longValue ^ (longValue >>> 32));
    result = prime * result + ((stringValue == null) ? 0 : stringValue.hashCode());
    return result;
  
<no_super_class>