/**
  * Starts a new CZML packet on the given stream.
  *
  * @param output The stream to which to write the packet.
  * @return The packet writer.
  */
 public final PacketCesiumWriter openPacket(CesiumOutputStream output) {
   PacketCesiumWriter packetWriter = m_packetWriter.getValue();
   packetWriter.open(output);
   return packetWriter;
 }
 @Test
 @Ignore
 public final void sandbox() {
   JulianDate date = new JulianDate(2451545.0);
   {
     StringWriter sw = new StringWriter();
     try {
       CesiumOutputStream output = new CesiumOutputStream(sw);
       output.setPrettyFormatting(true);
       CesiumStreamWriter writer = new CesiumStreamWriter();
       {
         PacketCesiumWriter packet = writer.openPacket(output);
         try {
           packet.writeId("MyID");
           packet.writeAvailability(date, date.addDays(1.0));
           {
             PositionCesiumWriter position = packet.openPositionProperty();
             try {
               {
                 CesiumIntervalListWriter<cesiumlanguagewriter.PositionCesiumWriter> intervalList =
                     position.openMultipleIntervals();
                 try {
                   {
                     PositionCesiumWriter interval = intervalList.openInterval();
                     try {
                       interval.writeInterval(new TimeInterval(date, date.addDays(1.0)));
                       interval.writeCartesian(new Cartesian(1.0, 2.0, 3.0));
                     } finally {
                       DisposeHelper.dispose(interval);
                     }
                   }
                   {
                     PositionCesiumWriter interval =
                         intervalList.openInterval(date.addDays(1.0), date.addDays(2.0));
                     try {
                       ArrayList<cesiumlanguagewriter.JulianDate> dates =
                           new ArrayList<cesiumlanguagewriter.JulianDate>();
                       ArrayList<cesiumlanguagewriter.Cartographic> positions =
                           new ArrayList<cesiumlanguagewriter.Cartographic>();
                       dates.add(date.addDays(1.0));
                       positions.add(Cartographic.getZero());
                       dates.add(date.addDays(1.5));
                       positions.add(new Cartographic(1.0, 0.0, 0.0));
                       dates.add(date.addDays(2.0));
                       positions.add(new Cartographic(0.0, 1.0, 0.0));
                       interval.writeCartographicRadians(dates, positions);
                     } finally {
                       DisposeHelper.dispose(interval);
                     }
                   }
                 } finally {
                   DisposeHelper.dispose(intervalList);
                 }
               }
             } finally {
               DisposeHelper.dispose(position);
             }
           }
           {
             OrientationCesiumWriter orientation = packet.openOrientationProperty();
             try {
               {
                 CesiumIntervalListWriter<cesiumlanguagewriter.OrientationCesiumWriter>
                     intervalList = orientation.openMultipleIntervals();
                 try {
                   {
                     OrientationCesiumWriter interval = intervalList.openInterval();
                     try {
                       interval.writeAxes("MyMadeUpAxes");
                       interval.writeInterval(new TimeInterval(date, date.addDays(1.0)));
                       interval.writeUnitQuaternion(new UnitQuaternion(1D, 0D, 0D, 0D));
                     } finally {
                       DisposeHelper.dispose(interval);
                     }
                   }
                   {
                     OrientationCesiumWriter interval = intervalList.openInterval();
                     try {
                       interval.writeInterpolationAlgorithm(CesiumInterpolationAlgorithm.LINEAR);
                       interval.writeInterpolationDegree(1);
                       ArrayList<cesiumlanguagewriter.JulianDate> dates =
                           new ArrayList<cesiumlanguagewriter.JulianDate>();
                       ArrayList<cesiumlanguagewriter.UnitQuaternion> orientations =
                           new ArrayList<cesiumlanguagewriter.UnitQuaternion>();
                       dates.add(date.addDays(1.0));
                       orientations.add(UnitQuaternion.getIdentity());
                       dates.add(date.addDays(1.5));
                       orientations.add(new UnitQuaternion(0.0, 1.0, 0.0, 0.0));
                       dates.add(date.addDays(2.0));
                       orientations.add(new UnitQuaternion(0.0, 0.0, 1.0, 0.0));
                       interval.writeUnitQuaternion(dates, orientations);
                     } finally {
                       DisposeHelper.dispose(interval);
                     }
                   }
                 } finally {
                   DisposeHelper.dispose(intervalList);
                 }
               }
             } finally {
               DisposeHelper.dispose(orientation);
             }
           }
         } finally {
           DisposeHelper.dispose(packet);
         }
       }
       ConsoleHelper.writeLine(sw.toString());
     } finally {
       DisposeHelper.dispose(sw);
     }
   }
 }