/*
This program was generated by the following Python script:

#!/usr/bin/python2.5

# Remove this when Python 2.6 hits the streets.
from __future__ import with_statement

import sys
import os.path


# Quines the easy way.
with open(sys.argv[0], 'r') as handle:
  source = handle.read()

with open(os.path.join(os.path.dirname(sys.argv[0]), 'EqualityTest.java'), 'w') as out:
  print >> out, "/""*"
  print >> out, "This program was generated by the following Python script:"
  print >> out
  out.write(source)
  print >> out, "*""/"

  print >> out, r'''
package com.facebook.thrift.test;

// Generated code
import thrift.test.*;

/'''r'''**
 * @author David Reiss <dreiss@facebook.com>
 *'''r'''/
public class EqualityTest {
  public static void main(String[] args) throws Exception {
    JavaTestHelper lhs, rhs;
'''

  vals = {
    'int': ("1", "2"),
    'obj': ("\"foo\"", "\"bar\""),
    'bin': ("new byte[]{1,2}", "new byte[]{3,4}"),
  }
  matrix = (
    (False,False),
    (False,True ),
    (True ,False),
    (True ,True ),
  )

  for type in ('int', 'obj', 'bin'):
    for option in ('req', 'opt'):
      nulls = matrix[0:1] if type == 'int' else matrix[-1::-1]
      issets = matrix
      for is_null in nulls:
        for is_set in issets:
          for equal in (True, False):
            print >> out
            print >> out, "    lhs = new JavaTestHelper();"
            print >> out, "    rhs = new JavaTestHelper();"
            print >> out, "    lhs." + option + "_" + type, "=", vals[type][0] + ";"
            print >> out, "    rhs." + option + "_" + type, "=", vals[type][0 if equal else 1] + ";"
            if (is_set[0]): print >> out, "    lhs.__isset." + option + "_" + type, "= true;"
            if (is_set[1]): print >> out, "    rhs.__isset." + option + "_" + type, "= true;"
            if (is_null[0]): print >> out, "    lhs." + option + "_" + type, "= null;"
            if (is_null[1]): print >> out, "    rhs." + option + "_" + type, "= null;"
            this_present = not is_null[0] and (option == 'req' or is_set[0])
            that_present = not is_null[1] and (option == 'req' or is_set[1])
            print >> out, "    // this_present = " + repr(this_present)
            print >> out, "    // that_present = " + repr(that_present)
            is_equal = \
                (not this_present and not that_present) or \
                (this_present and that_present and equal)
            eq_str = 'true' if is_equal else 'false'

            print >> out, "    if (lhs.equals(rhs) != "+eq_str+")"
            print >> out, "      throw new RuntimeException(\"Failure\");"
            if is_equal:
              print >> out, "    if (lhs.hashCode() != rhs.hashCode())"
              print >> out, "      throw new RuntimeException(\"Failure\");"

  print >> out, r'''
  }
}
'''
*/

package com.facebook.thrift.test;

// Generated code
import thrift.test.*;

/**
 * @author David Reiss <dreiss@facebook.com>
 */
public class EqualityTest {
  public static void main(String[] args) throws Exception {
    JavaTestHelper lhs, rhs;


    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 1;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 2;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 1;
    rhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 2;
    rhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 1;
    lhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 2;
    lhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 1;
    lhs.__isset.req_int = true;
    rhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_int = 1;
    rhs.req_int = 2;
    lhs.__isset.req_int = true;
    rhs.__isset.req_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 1;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 2;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 1;
    rhs.__isset.opt_int = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 2;
    rhs.__isset.opt_int = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 1;
    lhs.__isset.opt_int = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 2;
    lhs.__isset.opt_int = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 1;
    lhs.__isset.opt_int = true;
    rhs.__isset.opt_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_int = 1;
    rhs.opt_int = 2;
    lhs.__isset.opt_int = true;
    rhs.__isset.opt_int = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    rhs.req_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    lhs.req_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    rhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    rhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    rhs.req_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    rhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    rhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "foo";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_obj = "foo";
    rhs.req_obj = "bar";
    lhs.__isset.req_obj = true;
    rhs.__isset.req_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    lhs.opt_obj = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    rhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    rhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    rhs.opt_obj = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    rhs.__isset.opt_obj = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    rhs.__isset.opt_obj = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "foo";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_obj = "foo";
    rhs.opt_obj = "bar";
    lhs.__isset.opt_obj = true;
    rhs.__isset.opt_obj = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    rhs.req_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    lhs.req_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    rhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    rhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    rhs.req_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    rhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    rhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{1,2};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.req_bin = new byte[]{1,2};
    rhs.req_bin = new byte[]{3,4};
    lhs.__isset.req_bin = true;
    rhs.__isset.req_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    lhs.opt_bin = null;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    rhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    rhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    rhs.opt_bin = null;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    // this_present = False
    // that_present = False
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    rhs.__isset.opt_bin = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    rhs.__isset.opt_bin = true;
    // this_present = False
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    // this_present = True
    // that_present = False
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{1,2};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != true)
      throw new RuntimeException("Failure");
    if (lhs.hashCode() != rhs.hashCode())
      throw new RuntimeException("Failure");

    lhs = new JavaTestHelper();
    rhs = new JavaTestHelper();
    lhs.opt_bin = new byte[]{1,2};
    rhs.opt_bin = new byte[]{3,4};
    lhs.__isset.opt_bin = true;
    rhs.__isset.opt_bin = true;
    // this_present = True
    // that_present = True
    if (lhs.equals(rhs) != false)
      throw new RuntimeException("Failure");

  }
}

