From 45ac3bc487970f736807700e29c7e81aa77eaf2b Mon Sep 17 00:00:00 2001
From: brutzman <brutzman@nps.edu>
Date: Sat, 22 Jan 2022 14:28:35 -0800
Subject: [PATCH] fix error when clearing StringBuilder that leads to NPE

---
 .../nps/moves/dis7/pdus/ActionRequestPdu.java |   6 +-
 .../moves/dis7/pdus/ActionRequestRPdu.java    |   6 +-
 .../moves/dis7/pdus/ActionResponsePdu.java    |   6 +-
 .../moves/dis7/pdus/ActionResponseRPdu.java   |   6 +-
 .../moves/dis7/pdus/AggregateStatePdu.java    |  15 +-
 .../moves/dis7/pdus/ArealObjectStatePdu.java  |   3 +-
 .../moves/dis7/pdus/ArticulatedPartsPdu.java  |   3 +-
 .../edu/nps/moves/dis7/pdus/AttributePdu.java |   3 +-
 .../moves/dis7/pdus/AttributeRecordSet.java   |   3 +-
 .../edu/nps/moves/dis7/pdus/CommentPdu.java   |   3 +-
 .../edu/nps/moves/dis7/pdus/CommentRPdu.java  |   3 +-
 .../edu/nps/moves/dis7/pdus/DataPdu.java      |   6 +-
 .../pdus/DataQueryDatumSpecification.java     |   6 +-
 .../edu/nps/moves/dis7/pdus/DataQueryPdu.java |   6 +-
 .../nps/moves/dis7/pdus/DataQueryRPdu.java    |   6 +-
 .../edu/nps/moves/dis7/pdus/DataRPdu.java     |   6 +-
 .../moves/dis7/pdus/DatumSpecification.java   |   6 +-
 .../nps/moves/dis7/pdus/DetonationPdu.java    |   3 +-
 .../dis7/pdus/DirectedEnergyAreaAimpoint.java |   6 +-
 .../dis7/pdus/DirectedEnergyFirePdu.java      |   3 +-
 .../edu/nps/moves/dis7/pdus/DisTime.java      | 234 ------------------
 .../dis7/pdus/ElectromagneticEmissionPdu.java |   3 +-
 .../moves/dis7/pdus/ElectronicEmitter.java    |   3 +-
 .../edu/nps/moves/dis7/pdus/EmitterBeam.java  |   3 +-
 .../dis7/pdus/EntityDamageStatusPdu.java      |   3 +-
 .../nps/moves/dis7/pdus/EntityStatePdu.java   |   3 +-
 .../moves/dis7/pdus/EntityStateUpdatePdu.java |   3 +-
 .../dis7/pdus/EnvironmentalProcessPdu.java    |   3 +-
 .../nps/moves/dis7/pdus/EventReportPdu.java   |   6 +-
 .../nps/moves/dis7/pdus/EventReportRPdu.java  |   6 +-
 .../nps/moves/dis7/pdus/GriddedDataPdu.java   |   6 +-
 .../edu/nps/moves/dis7/pdus/IFFLayer2Pdu.java |   3 +-
 .../moves/dis7/pdus/IffDataSpecification.java |   3 +-
 .../pdus/InformationOperationsActionPdu.java  |   3 +-
 .../pdus/InformationOperationsReportPdu.java  |   3 +-
 .../moves/dis7/pdus/IntercomControlPdu.java   |   3 +-
 .../edu/nps/moves/dis7/pdus/IsGroupOfPdu.java |   3 +-
 .../moves/dis7/pdus/LinearObjectStatePdu.java |   3 +-
 .../nps/moves/dis7/pdus/MinefieldDataPdu.java |  18 +-
 .../moves/dis7/pdus/MinefieldQueryPdu.java    |   6 +-
 .../moves/dis7/pdus/MinefieldStatePdu.java    |   6 +-
 .../nps/moves/dis7/pdus/RecordQueryRPdu.java  |   3 +-
 .../dis7/pdus/RecordQuerySpecification.java   |   3 +-
 .../edu/nps/moves/dis7/pdus/RecordRPdu.java   |   3 +-
 .../moves/dis7/pdus/RecordSpecification.java  |   3 +-
 .../nps/moves/dis7/pdus/ResupplyOfferPdu.java |   3 +-
 .../moves/dis7/pdus/ResupplyReceivedPdu.java  |   3 +-
 .../edu/nps/moves/dis7/pdus/SEESPdu.java      |   6 +-
 .../moves/dis7/pdus/ServiceRequestPdu.java    |   3 +-
 .../edu/nps/moves/dis7/pdus/SetDataPdu.java   |   6 +-
 .../edu/nps/moves/dis7/pdus/SetDataRPdu.java  |   6 +-
 .../nps/moves/dis7/pdus/SetRecordRPdu.java    |   3 +-
 .../pdus/StandardVariableSpecification.java   |   3 +-
 .../nps/moves/dis7/pdus/TransmitterPdu.java   |   6 +-
 .../edu/nps/moves/dis7/pdus/UAEmitter.java    |   3 +-
 .../dis7/pdus/UnderwaterAcousticPdu.java      |   9 +-
 56 files changed, 172 insertions(+), 320 deletions(-)
 delete mode 100644 src-generated/edu/nps/moves/dis7/pdus/DisTime.java

diff --git a/src-generated/edu/nps/moves/dis7/pdus/ActionRequestPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ActionRequestPdu.java
index 8e3ff24101..df2b575e28 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ActionRequestPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ActionRequestPdu.java
@@ -404,11 +404,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ActionRequestRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ActionRequestRPdu.java
index 3e757845f7..e05bb5c450 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ActionRequestRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ActionRequestRPdu.java
@@ -500,11 +500,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ActionResponsePdu.java b/src-generated/edu/nps/moves/dis7/pdus/ActionResponsePdu.java
index 9d19d7a0e3..7db3385283 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ActionResponsePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ActionResponsePdu.java
@@ -404,11 +404,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ActionResponseRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ActionResponseRPdu.java
index 8ca75d91d6..678b2eaeb6 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ActionResponseRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ActionResponseRPdu.java
@@ -404,11 +404,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/AggregateStatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/AggregateStatePdu.java
index 03c8091ffb..7304283d09 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/AggregateStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/AggregateStatePdu.java
@@ -843,23 +843,28 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" aggregateIDList: ");
     aggregateIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" entityIDList: ");
     entityIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" silentAggregateSystemList: ");
     silentAggregateSystemList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" silentEntitySystemList: ");
     silentEntitySystemList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumList: ");
     variableDatumList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.java
index 5bb1d9d346..1c8975c1ba 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ArealObjectStatePdu.java
@@ -572,7 +572,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" objectLocation: ");
     objectLocation.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.java
index 632b94e373..abdbf5f005 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ArticulatedPartsPdu.java
@@ -310,7 +310,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableParameters: ");
     variableParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/AttributePdu.java b/src-generated/edu/nps/moves/dis7/pdus/AttributePdu.java
index 343a2bdd26..f8a2875fef 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/AttributePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/AttributePdu.java
@@ -517,7 +517,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" attributeRecordSets: ");
     attributeRecordSets.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/AttributeRecordSet.java b/src-generated/edu/nps/moves/dis7/pdus/AttributeRecordSet.java
index c4a554dbe2..8507633b1c 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/AttributeRecordSet.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/AttributeRecordSet.java
@@ -243,7 +243,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" attributeRecords: ");
     attributeRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/CommentPdu.java b/src-generated/edu/nps/moves/dis7/pdus/CommentPdu.java
index d5c6bc6a2a..20e2e5e6fa 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/CommentPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/CommentPdu.java
@@ -292,7 +292,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/CommentRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/CommentRPdu.java
index d4781f017b..52087bff6d 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/CommentRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/CommentRPdu.java
@@ -292,7 +292,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DataPdu.java b/src-generated/edu/nps/moves/dis7/pdus/DataPdu.java
index c9f5d31adf..dd07afd11c 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DataPdu.java
@@ -403,11 +403,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DataQueryDatumSpecification.java b/src-generated/edu/nps/moves/dis7/pdus/DataQueryDatumSpecification.java
index 986adb8248..7d000420c0 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DataQueryDatumSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DataQueryDatumSpecification.java
@@ -283,11 +283,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumIDList: ");
     fixedDatumIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumIDList: ");
     variableDatumIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DataQueryPdu.java b/src-generated/edu/nps/moves/dis7/pdus/DataQueryPdu.java
index 6b18dde6a2..e5dbaaa312 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DataQueryPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DataQueryPdu.java
@@ -403,11 +403,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DataQueryRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/DataQueryRPdu.java
index 1121a393f3..55668148e3 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DataQueryRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DataQueryRPdu.java
@@ -499,11 +499,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DataRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/DataRPdu.java
index 4cc540d1d1..f1a2494dd6 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DataRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DataRPdu.java
@@ -472,11 +472,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DatumSpecification.java b/src-generated/edu/nps/moves/dis7/pdus/DatumSpecification.java
index 34dfdb309f..98eb5aac3c 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DatumSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DatumSpecification.java
@@ -283,11 +283,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumIDList: ");
     fixedDatumIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumIDList: ");
     variableDatumIDList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DetonationPdu.java b/src-generated/edu/nps/moves/dis7/pdus/DetonationPdu.java
index bda1f289d6..23d8660986 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DetonationPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DetonationPdu.java
@@ -568,7 +568,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableParameters: ");
     variableParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyAreaAimpoint.java b/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyAreaAimpoint.java
index d62947e449..3fd15bc8a0 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyAreaAimpoint.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyAreaAimpoint.java
@@ -391,11 +391,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" beamAntennaParameterList: ");
     beamAntennaParameterList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" directedEnergyTargetEnergyDepositionRecordList: ");
     directedEnergyTargetEnergyDepositionRecordList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.java b/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.java
index b811358e81..cfd0c70011 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/DirectedEnergyFirePdu.java
@@ -734,7 +734,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" dERecords: ");
     dERecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/DisTime.java b/src-generated/edu/nps/moves/dis7/pdus/DisTime.java
deleted file mode 100644
index 9669b3b37b..0000000000
--- a/src-generated/edu/nps/moves/dis7/pdus/DisTime.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * Copyright (c) 2008-2022, MOVES Institute, Naval Postgraduate School (NPS). All rights reserved.
- * This work is provided under a BSD open-source license, see project license.html and license.txt
- */
-
-package edu.nps.moves.dis7.pdus;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * <p>DIS time units are a pain to work with. As specified by the IEEE DIS Protocol specification, 
- * DIS time units are defined in a custom manner and set
- * equal to 2^31 - 1 time units per hour. The DIS time is set to the number of time
- * units since the start of the hour. Rollover problems can easily occur.  The timestamp field in the PDU header is
- * four bytes long and is specified to be an unsigned integer value.</p>
- *
- * <p>Additionally, there are two types of official timestamps in the PDU header: 
- * <i>absolute time</i> and <i>relative time</i>. Absolute time is used when the host is synchronized to 
- * <a href="https://en.wikipedia.org/wiki/Coordinated_Universal_Time" target="_blank">Coordinated Universal Time (UTC)</a>, i.e. the host
- * is accurately synchronized with UTC via <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol" target="_blank">Network Time Protocol (NTP)</a>.
- * The packet timestamps originating from such hosts can be legitimately
- * compared to the timestamp of packets received from other hosts, since they all are
- * referenced to the same universal time.</p>
- *
- * <p><b>Absolute timestamps</b> have their least significant bit (LSB) set to 1, and relative timestamps have their
- * LSB set to 0. The idea in the DIS specification is to get the current time since the top of the hour,
- * divide by 2^31-1, shift left one bit, then set the LSB to either 0 for relative
- * timestamps or 1 for absolute timestamps.</p>
- *
- * <p><b>Relative timestamps</b> are used when the host does NOT have access to NTP, and hence
- * the system time might not be coordinated with that of other hosts. This means that
- * a host receiving DIS packets from several hosts might have to set up a per-host
- * table to correlate baseline time references before ordering packets, and that 
- * the PDU timestamp fields from one host is not
- * directly comparable to the PDU timestamp field from another host.</p>
- *
- * <p>The nature of shared DIS data is such that the timestamp values <i>roll over</i> once an
- * hour, and simulations must be prepared for that eventuality. In other words, at the top of the hour
- * outgoing PDUs will have a timestamp of 1, then just before the end of the hour the
- * PDUs will have a timestamp of 2^31 - 1, and then they will roll back over to a value of 1.
- * Receiving applications should expect this behavior, and not simply expect a
- * monotonically increasing timestamp field.</p>
- *
- * <p><b>Unix time</b>. Note that many applications in the wild have been known to completely ignore
- * the standard and to simply put commonly used <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> (seconds since 1 January 1970) into the
- * field. </p>
- *
- * <p><b>Year time</b>.  The rollover associated with official DIS timestamps don't work all that well in numerous applications,
- * which often expect a monotonically increasing timestamp field.   Such unpredictable rollover variations are also incompatible
- * with archival recording or streaming playback of Live-Virtual-Constructive (LVC) behavior streams.
- * To avoid such problems, NPS created a "yearly" timestamp which measures 
- * hundredths of a second since the start of the current year. The maximum value for
- * such measurements is 3,153,600,000, which can fit into an unsigned int. 
- * One hundredth of a second resolution is accurate enough for most applications, and you typically don't have to worry about
- * rollover, instead getting only a monotonically increasing timestamp value.</p>
- *
- * <p><b>TODO: time 0.0</b>.  Functionality is needed to define a shared common time origin, and also to
- * precisely adjust stream timestamps when coordinating recorded PDU playback within LVC applications.
- * We think the ability to "start at time 0.0", or normalizing initial time to zero 
- * for a recorded PDU stream, is actually a pretty common use case.</p>
- * <p> Don McGregor, Mike Bailey,  and Don Brutzman</p>
- * 
- * @author DMcG
- */
-// * problems unlikely:
-// * <p><b>TODO: confirm thread safe</b>. Be careful with the shared instance of this class --
-// * it has static synchronized methods but is not yet
-// * confirmed to be thread safe. If you are using multiple threads, suggest you
-// * create a new instance of the class for each thread to prevent the values from
-// * getting stomped on.</p>
-
-public class DisTime
-{
-    /** mask for absolute timestamps */
-    public static final int ABSOLUTE_TIMESTAMP_MASK = 0x00000001;
-    
-    /** mask for relative timestamps */
-    public static final int RELATIVE_TIMESTAMP_MASK = 0xfffffffe;
-    
-    /** calendar instance */
-    private static GregorianCalendar calendar;
-
-   // public static DisTime disTime = null;
-
-    /**
-     * Shared instance. This is not thread-safe. If you are working in multiple threads,
-     * create a new instance for each thread.
-     * return singleton instance of DisTime
-     */
-   /* public static DisTime createInstance()
-    {
-        if (disTime == null) {
-            disTime = new DisTime();
-        }
-
-        return disTime;
-    }
-    */
-    
-    public DisTime()
-    {
-        calendar = new GregorianCalendar();
-    }
-
-    /**
-     * Returns the number of DIS time units since the top of the hour. there are 2^31-1 DIS time
-     * units per hour.
-     * @return integer DIS time units since the start of the hour.
-     */
-    private static synchronized int getCurrentDisTimeUnitsSinceTopOfHour()
-    {
-        // set calendar object to current time
-        long currentTime = System.currentTimeMillis(); // UTC milliseconds since 1970
-        calendar.setTimeInMillis(currentTime);
-
-        // Set calendar to top of the hour, then compute what the calendar object says was milliseconds since 1970
-        // at the top of the hour
-        calendar.set(Calendar.MINUTE, 0);
-        calendar.set(Calendar.SECOND, 0);
-        calendar.set(Calendar.MILLISECOND, 0);
-        long topOfHour = calendar.getTimeInMillis();
-
-        // Milliseconds since the top of the hour
-        long diff = currentTime - topOfHour;
-
-        // It turns out that Integer.MAX_VALUE is 2^31-1, which is the time unit value, ie there are
-        // 2^31-1 DIS time units in an hour. 3600 sec/hr X 1000 msec/sec divided into the number of
-        // msec since the start of the hour gives the percentage of DIS time units in the hour, times
-        // the number of DIS time units per hour, equals the time value
-        double val = (diff / (3600.0 * 1000.0)) * Integer.MAX_VALUE;
-        int ts = (int) val;
-
-        return ts;
-    }
-
-    /**
-     * Checks local system clock and returns the current DIS standard absolute timestamp, assuming that this host is synchronized to NTP.
-     * // Fix to bitshift by mvormelch.
-     * @see <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol" target="_blank">Wikipedia: Network Time Protocol (NTP)</a>
-     * @return DIS time units, get absolute timestamp
-     */
-    public static synchronized int getCurrentDisAbsoluteTimestamp()
-    {
-         int val = getCurrentDisTimeUnitsSinceTopOfHour();
-         val = (val << 1) | ABSOLUTE_TIMESTAMP_MASK; // always flip the lsb to 1
-         return val;
-    }
-
-    /**
-     * Checks local system clock and returns the current DIS standard relative timestamp, which should be used if this host
-     * is not slaved to NTP. Fix to bitshift by mvormelch
-     * @see <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol" target="_blank">Wikipedia: Network Time Protocol (NTP)</a>
-     * @return DIS time units, relative
-     */
-    public static int getCurrentDisRelativeTimestamp()
-    {
-        int val = getCurrentDisTimeUnitsSinceTopOfHour();
-        val = (val << 1) & RELATIVE_TIMESTAMP_MASK; // always flip the lsb to 0
-        return val;
-    }
-
-    /**
-     * Checks local system clock and returns a useful timestamp, hundredths of a second since the start of the year.
-     * This effectively eliminates the need for receivers to handle timestamp rollover,
-     * as long as you're not working late on New Year's Eve.
-     * (Previously referred to as NPS timestamp.)
-     * TODO consider renaming as Annual timestamp.
-     * TODO consult with DIS working group about timestamp disambiguation.
-     * @return a timestamp in hundredths of a second since the start of the year
-     */
-    public static synchronized int getCurrentYearTimestamp()
-    {
-        // set calendar object to current time
-        long currentTime = System.currentTimeMillis(); // UTC milliseconds since 1970
-        calendar.setTimeInMillis(currentTime);
-
-        // Set calendar to the start of the year
-        calendar.set(Calendar.MONTH, 0);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);
-        calendar.set(Calendar.HOUR, 0);
-        calendar.set(Calendar.MINUTE, 0);
-        calendar.set(Calendar.SECOND, 0);
-        calendar.set(Calendar.MILLISECOND, 0);
-        long startOfYear = calendar.getTimeInMillis();
-
-        // Milliseconds since the top of the hour
-        long diff = currentTime - startOfYear;
-        diff /= 10; // milliseconds to hundredths of a second
-
-        return (int) diff;
-    }
-
-    /**
-     * Checks local system clock and returns a useful timestamp as local Unix time.
-     * Another option for marshalling with the timestamp field set automatically. The UNIX
-     * time is conventionally seconds since January 1, 1970. UTC time is used, and leap seconds
-     * are excluded. This approach is popular in the wild, but the time resolution is not very
-     * good for high frequency updates, such as aircraft. An entity updating at 30 PDUs/second
-     * would see 30 PDUs sent out with the same timestamp, and have 29 of them discarded as
-     * duplicate packets.
-     *
-     * Note that there are other "Unix times", such milliseconds since 1/1/1970, saved in a long.
-     * This cannot be used, since the value is saved in a long. Java's System.getCurrentTimeMillis()
-     * uses this value.
-     *
-     * Unix time (in seconds) rolls over in 2038. 
-     *
-     * Consult the Wikipedia page on <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> for the gory details
-     * @return seconds since 1970
-     */
-    public static synchronized int getCurrentUnixTimestamp()
-    {
-        long t = System.currentTimeMillis();
-        t /= 1000l;   // NB: integer division, convert milliseconds to seconds
-        return (int) t;
-    }
-    
-    /**
-     * Convert timestamp value to string for logging and diagnostics.
-     * TODO consider different formats for different timestampStyle values.
-     * @param timestamp value in milliseconds
-     * @see GregorianCalendar
-     * @return string value provided by GregorianCalendar
-     */
-    public static String convertToString(int timestamp)
-    {
-        GregorianCalendar newCalendar = new GregorianCalendar();
-        newCalendar.setTimeInMillis(timestamp);
-        DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
-        return formatter.format(newCalendar.getTime());
-    }
-}
\ No newline at end of file
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.java
index c411dcdacf..af18cb74dd 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ElectromagneticEmissionPdu.java
@@ -401,7 +401,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" systems: ");
     systems.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ElectronicEmitter.java b/src-generated/edu/nps/moves/dis7/pdus/ElectronicEmitter.java
index 49fd0edc24..de719d9c8e 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ElectronicEmitter.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ElectronicEmitter.java
@@ -305,7 +305,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" beams: ");
     beams.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EmitterBeam.java b/src-generated/edu/nps/moves/dis7/pdus/EmitterBeam.java
index 164b279165..a5924148e4 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EmitterBeam.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EmitterBeam.java
@@ -485,7 +485,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" trackJamData: ");
     trackJamData.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.java b/src-generated/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.java
index d18b3b1795..f20ec1c64f 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EntityDamageStatusPdu.java
@@ -378,7 +378,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" damageDescriptionRecords: ");
     damageDescriptionRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EntityStatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/EntityStatePdu.java
index 1d869f186e..044b9d8d40 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EntityStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EntityStatePdu.java
@@ -588,7 +588,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableParameters: ");
     variableParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.java
index 322eff5a2c..3990c54ecd 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EntityStateUpdatePdu.java
@@ -455,7 +455,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" variableParameters: ");
     variableParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.java b/src-generated/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.java
index 54360deb1e..bdfe08b9a0 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EnvironmentalProcessPdu.java
@@ -427,7 +427,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" environmentRecords: ");
     environmentRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EventReportPdu.java b/src-generated/edu/nps/moves/dis7/pdus/EventReportPdu.java
index 225165d175..e9509b6607 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EventReportPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EventReportPdu.java
@@ -404,11 +404,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/EventReportRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/EventReportRPdu.java
index 2ba7b57247..b0818aef5e 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/EventReportRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/EventReportRPdu.java
@@ -404,11 +404,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/GriddedDataPdu.java b/src-generated/edu/nps/moves/dis7/pdus/GriddedDataPdu.java
index 61a06f4ce2..6d5419d33e 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/GriddedDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/GriddedDataPdu.java
@@ -738,11 +738,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" gridAxisDescriptors: ");
     gridAxisDescriptors.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" gridDataRecords: ");
     gridDataRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.java b/src-generated/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.java
index 3a539d2245..53a043a6f2 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/IFFLayer2Pdu.java
@@ -405,7 +405,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fundamentalIFFParameters: ");
     fundamentalIFFParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/IffDataSpecification.java b/src-generated/edu/nps/moves/dis7/pdus/IffDataSpecification.java
index c6199299ff..e913981b6e 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/IffDataSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/IffDataSpecification.java
@@ -216,7 +216,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" iffDataRecords: ");
     iffDataRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.java b/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.java
index e469032215..a27aa59657 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsActionPdu.java
@@ -566,7 +566,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" ioRecords: ");
     ioRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.java b/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.java
index 972b49e383..8c6784605c 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/InformationOperationsReportPdu.java
@@ -496,7 +496,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" ioRecords: ");
     ioRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/IntercomControlPdu.java b/src-generated/edu/nps/moves/dis7/pdus/IntercomControlPdu.java
index 2f45e8f3b3..bb84e45ae3 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/IntercomControlPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/IntercomControlPdu.java
@@ -626,7 +626,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" intercomParameters: ");
     intercomParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/IsGroupOfPdu.java b/src-generated/edu/nps/moves/dis7/pdus/IsGroupOfPdu.java
index 5330408660..91d5999559 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/IsGroupOfPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/IsGroupOfPdu.java
@@ -419,7 +419,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" groupedEntityDescriptions: ");
     groupedEntityDescriptions.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.java
index 768c0dd301..465be67744 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/LinearObjectStatePdu.java
@@ -484,7 +484,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" linearSegmentParameters: ");
     linearSegmentParameters.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/MinefieldDataPdu.java b/src-generated/edu/nps/moves/dis7/pdus/MinefieldDataPdu.java
index 0cf6084733..8c080ec81b 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/MinefieldDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/MinefieldDataPdu.java
@@ -1276,27 +1276,33 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" sensorTypes: ");
     sensorTypes.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" mineLocation: ");
     mineLocation.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" mineOrientation: ");
     mineOrientation.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" mineEmplacementTime: ");
     mineEmplacementTime.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" fusing: ");
     fusing.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" paintScheme: ");
     paintScheme.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.java b/src-generated/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.java
index caa79f788b..26fb912dc9 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/MinefieldQueryPdu.java
@@ -529,11 +529,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" requestedPerimeterPoints: ");
     requestedPerimeterPoints.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" sensorTypes: ");
     sensorTypes.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/MinefieldStatePdu.java b/src-generated/edu/nps/moves/dis7/pdus/MinefieldStatePdu.java
index 203ce99c96..f3103415ba 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/MinefieldStatePdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/MinefieldStatePdu.java
@@ -578,11 +578,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" perimeterPoints: ");
     perimeterPoints.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" mineType: ");
     mineType.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/RecordQueryRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/RecordQueryRPdu.java
index 23fa8e94fb..12ad09a28b 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/RecordQueryRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/RecordQueryRPdu.java
@@ -426,7 +426,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" recordIDs: ");
     recordIDs.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/RecordQuerySpecification.java b/src-generated/edu/nps/moves/dis7/pdus/RecordQuerySpecification.java
index 962feb32fd..b44e79ba7f 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/RecordQuerySpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/RecordQuerySpecification.java
@@ -215,7 +215,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" recordIDs: ");
     recordIDs.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/RecordRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/RecordRPdu.java
index bd72009ad1..6a1dea110f 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/RecordRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/RecordRPdu.java
@@ -399,7 +399,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" recordSets: ");
     recordSets.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/RecordSpecification.java b/src-generated/edu/nps/moves/dis7/pdus/RecordSpecification.java
index 7525545bb2..eae5c94c30 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/RecordSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/RecordSpecification.java
@@ -216,7 +216,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" recordSets: ");
     recordSets.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.java
index 595f5079c9..a36d37003d 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ResupplyOfferPdu.java
@@ -406,7 +406,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" supplies: ");
     supplies.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.java
index 92e82c4ece..80c8e87056 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ResupplyReceivedPdu.java
@@ -406,7 +406,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" supplies: ");
     supplies.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/SEESPdu.java b/src-generated/edu/nps/moves/dis7/pdus/SEESPdu.java
index 95b7266eab..b79f1c9236 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/SEESPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/SEESPdu.java
@@ -479,11 +479,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" propulsionSystemData: ");
     propulsionSystemData.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" vectoringSystemData: ");
     vectoringSystemData.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/ServiceRequestPdu.java b/src-generated/edu/nps/moves/dis7/pdus/ServiceRequestPdu.java
index d167829762..1895f6031d 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/ServiceRequestPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/ServiceRequestPdu.java
@@ -400,7 +400,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" supplies: ");
     supplies.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/SetDataPdu.java b/src-generated/edu/nps/moves/dis7/pdus/SetDataPdu.java
index 993aede681..23be101b92 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/SetDataPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/SetDataPdu.java
@@ -403,11 +403,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatums: ");
     fixedDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatums: ");
     variableDatums.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/SetDataRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/SetDataRPdu.java
index 2d9706d2e1..8eaffc1492 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/SetDataRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/SetDataRPdu.java
@@ -472,11 +472,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" fixedDatumRecords: ");
     fixedDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" variableDatumRecords: ");
     variableDatumRecords.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/SetRecordRPdu.java b/src-generated/edu/nps/moves/dis7/pdus/SetRecordRPdu.java
index 308963237e..635f1469fa 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/SetRecordRPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/SetRecordRPdu.java
@@ -432,7 +432,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" recordSets: ");
     recordSets.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/StandardVariableSpecification.java b/src-generated/edu/nps/moves/dis7/pdus/StandardVariableSpecification.java
index 2b542b36a9..70128d77e7 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/StandardVariableSpecification.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/StandardVariableSpecification.java
@@ -237,7 +237,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" standardVariables: ");
     standardVariables.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/TransmitterPdu.java b/src-generated/edu/nps/moves/dis7/pdus/TransmitterPdu.java
index fc1e6f99d6..8157fabc94 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/TransmitterPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/TransmitterPdu.java
@@ -859,11 +859,13 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" modulationParametersList: ");
     modulationParametersList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" antennaPatternList: ");
     antennaPatternList.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/UAEmitter.java b/src-generated/edu/nps/moves/dis7/pdus/UAEmitter.java
index 63a834168f..4e7042bc30 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/UAEmitter.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/UAEmitter.java
@@ -339,7 +339,8 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" beams: ");
     beams.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
diff --git a/src-generated/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.java b/src-generated/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.java
index 9e3b571968..e9cb9edb5d 100644
--- a/src-generated/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.java
+++ b/src-generated/edu/nps/moves/dis7/pdus/UnderwaterAcousticPdu.java
@@ -596,15 +596,18 @@ public int unmarshal(java.nio.ByteBuffer byteBuffer) throws Exception
     sb.append(" shaftRPMs: ");
     shaftRPMs.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" apaData: ");
     apaData.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
     sb.append(" emitterSystems: ");
     emitterSystems.forEach(r->{ sb2.append(" ").append(r);}); // writeList
     sb.append(sb2.toString().trim());
-    sb2.delete(0,sb2.length()-1); // reset
+    // https://stackoverflow.com/questions/2242471/clearing-a-string-buffer-builder-after-loop
+    sb2.setLength(0); // reset
 
    return sb.toString();
  }
-- 
GitLab