diff --git a/src-generated/edu/nps/moves/dis7/EntityStatePdu.java b/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
index db0a3c269c4977eb04a058dbae86288ca508db24..f9d7aeaa0817912fcff3648129769b4375c08df7 100644
--- a/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/EntityStatePdu.java
@@ -424,6 +424,7 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
      if( ! (entityAppearance == rhs.entityAppearance)) ivarsEqual = false;
      if( ! (deadReckoningParameters.equals( rhs.deadReckoningParameters) )) ivarsEqual = false;
      if( ! (marking.equals( rhs.marking) )) ivarsEqual = false;
+     if( ! (capabilities.equals( rhs.capabilities) )) ivarsEqual = false;
 
      for(int idx = 0; idx < variableParameters.size(); idx++)
         if( ! ( variableParameters.get(idx).equals(rhs.variableParameters.get(idx)))) ivarsEqual = false;
diff --git a/src-generated/edu/nps/moves/dis7/EntityType.java b/src-generated/edu/nps/moves/dis7/EntityType.java
index 9a6fa3108d9fbf630313bde5d1e28f092d0cf690..f09c64e3bcf58a25aa7766fa93c17d7beb8367ed 100644
--- a/src-generated/edu/nps/moves/dis7/EntityType.java
+++ b/src-generated/edu/nps/moves/dis7/EntityType.java
@@ -255,7 +255,8 @@ public int unmarshal(java.nio.ByteBuffer buff) throws Exception
     if(obj == null)
        return false;
 
-    if(getClass() != obj.getClass())
+    //if(getClass() != obj.getClass())
+    if(!getClass().isAssignableFrom(obj.getClass()))
         return false;
 
     return equalsImpl(obj);
diff --git a/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a123cd8048dfd3a7fc28d1210af6712c70d5039
--- /dev/null
+++ b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2008-2019, MOVES Institute, Naval Postgraduate School. All rights reserved.
+ * This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
+ */
+package edu.nps.moves.dis7;
+
+import edu.nps.moves.dis7.enumerations.AppearanceCamouflageType;
+import edu.nps.moves.dis7.enumerations.ForceID;
+import edu.nps.moves.dis7.enumerations.LandPlatformAppearance;
+import edu.nps.moves.dis7.enumerations.VariableRecordType;
+import edu.nps.moves.dis7.util.DisNetworking;
+import edu.nps.moves.dis7.util.PduFactory;
+import java.io.IOException;
+import org.junit.jupiter.api.*;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@DisplayName("Bit Field Round TripTest")
+public class BitFieldRoundTripTest
+{
+
+  public BitFieldRoundTripTest()
+  {
+  }
+
+  @BeforeAll
+  public static void setUpClass()
+  {
+    System.out.println("BitFieldRoundTripTest");
+  }
+
+  @AfterAll
+  public static void tearDownClass()
+  {
+  }
+
+  @BeforeEach
+  public void setUp()
+  {
+  }
+
+  @AfterEach
+  public void tearDown()
+  {
+  }
+
+
+  private Pdu receivedPdu;
+  private Object waiter = new Object();
+
+  @Test
+  public void testRoundTrip()
+  {
+    PduFactory factory = new PduFactory();
+
+    EntityStatePdu espdu = factory.makeEntityStatePdu();
+    
+    espdu.setForceId(ForceID.FRIENDLY_9);
+    espdu.setEntityType(new edu.nps.moves.dis7.entities.usa.platform.land.MK48_14_logisticsplatformtruck());
+    Vector3Float lv = new Vector3Float();
+    lv.setX(5.0f);
+    espdu.setEntityLinearVelocity(lv);
+    Vector3Double loc = new Vector3Double();
+    loc.setX(10.0d).setY(20.0d).setZ(1.0d);
+    espdu.setEntityLocation(loc);
+    
+    EulerAngles euler = new EulerAngles();
+    euler.setPhi(25.0f).setPsi(35.0f).setTheta(45.0f);
+    espdu.setEntityOrientation(euler);
+    
+    LandPlatformAppearance app = new LandPlatformAppearance();
+    app.set(LandPlatformAppearance.BLACKOUT_BRAKE_LIGHTS_ON, 1)
+      .set(LandPlatformAppearance.CAMOUFLAGE_TYPE, AppearanceCamouflageType.FOREST_CAMOUFLAGE.getValue())
+      .set(LandPlatformAppearance.IS_FROZEN,1);
+  
+    setUpReceiver();
+
+    try {
+      Thread.sleep(250l); // make sure receiver is listening
+      new DisNetworking().sendPdu(espdu);
+      Thread.sleep(1000l); 
+    }
+    catch (Exception ex) {
+      System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
+      System.exit(1);
+    }
+
+    // Compare
+    // If we made it this far, we've sent and received.  Now compare.
+    dump("Sent pdu: ",espdu);
+    dump("Rcvd pdu: ",espdu);
+    boolean same = receivedPdu.equals(espdu);
+    assertTrue(same, "Sent and received pdu not the same");
+  }
+
+  private void setUpReceiver()
+  {
+    Thread rcvThread = new Thread(() -> {
+      try {
+        receivedPdu = new DisNetworking().receivePdu();  // blocks
+      }
+      catch (IOException ex) {
+        System.err.println("Error receiving Multicast: " + ex.getLocalizedMessage());
+        System.exit(1);
+      }
+      //   waiter.notify();
+    });
+
+    rcvThread.setPriority(Thread.NORM_PRIORITY);
+    rcvThread.setDaemon(true);
+    rcvThread.start();
+  }
+  private void dump(String s, EntityStatePdu espdu)
+  {
+    System.out.println(s);
+    System.out.println("Alternative EntityType: "+espdu.alternativeEntityType.toString());
+    System.out.println("Entity Capabilities: "+espdu.capabilities.toString());
+    System.out.println(""+ espdu.getDeadReckoningParameters().toString());
+    System.out.println(""+ espdu.getEntityAppearance());
+    System.out.println(""+ espdu.getEntityID().toString());
+    System.out.println(""+ espdu.getEntityLinearVelocity().toString());
+    System.out.println(""+ espdu.getEntityLocation().toString());
+    System.out.println(""+ espdu.getEntityOrientation().toString());
+    System.out.println(""+ espdu.getEntityType().toString());
+    System.out.println(""+ espdu.getExerciseID());
+    System.out.println(""+ espdu.getForceId().toString());
+    System.out.println(""+ espdu.getLength());
+    System.out.println(""+ espdu.getMarking().toString());
+    System.out.println(""+ espdu.getPduStatus().toString());
+    System.out.println(""+ espdu.getPduType().toString());
+    System.out.println(""+ espdu.getProtocolFamily().toString());
+    System.out.println(""+ espdu.getProtocolVersion());
+    System.out.println(""+ espdu.getTimestamp());
+    System.out.println(""+ espdu.getVariableParameters().toString());
+    System.out.println();
+ }
+  public static void main(String[] args)
+  {
+    new BitFieldRoundTripTest().testRoundTrip();
+  }
+}