class B {
  @Override
  public boolean equals(Object obj) {
    return obj != null;
  }

  @Override
  public int hashCode() {
    return super.hashCode();
  }
}
class A extends B {
  Object[] a1;
  Object[][] a2;
  String[] a3;
  String[][] a4;
  int[] a5;
  int[][] a6;

  byte a7;
  short a8;
  int a9;
  long a10;
  float a11;
  double a12;

  Object a13;
  String a14;


    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        final A a = (A) o;
        return a7 == a.a7 &&
                a8 == a.a8 &&
                a9 == a.a9 &&
                a10 == a.a10 &&
                Float.compare(a11, a.a11) == 0 &&
                Double.compare(a12, a.a12) == 0 &&
                com.google.common.base.Objects.equal(a1, a.a1) &&
                com.google.common.base.Objects.equal(a2, a.a2) &&
                com.google.common.base.Objects.equal(a3, a.a3) &&
                com.google.common.base.Objects.equal(a4, a.a4) &&
                com.google.common.base.Objects.equal(a5, a.a5) &&
                com.google.common.base.Objects.equal(a6, a.a6) &&
                com.google.common.base.Objects.equal(a13, a.a13) &&
                com.google.common.base.Objects.equal(a14, a.a14);
    }

    @Override
    public int hashCode() {
        return com.google.common.base.Objects.hashCode(super.hashCode(), a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
    }
}