package Savage.GroundVehicles.Truck;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Interpolation.*;
import org.web3d.x3d.jsail.PointingDeviceSensor.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Time.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Turn signal lights, break lights, and head lights with beams for black midsize truck Turn signals blink and break lights stay on for a short period of time after being touched. </p>
 <p> Related links: Catalog page <a href="../../../../GroundVehicles/Truck/LightsAndTurnSignalsIndex.html" target="_blank">LightsAndTurnSignals</a>,  source <a href="../../../../GroundVehicles/Truck/LightsAndTurnSignals.java">LightsAndTurnSignals.java</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../GroundVehicles/Truck/LightsAndTurnSignals.x3d">LightsAndTurnSignals.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Turn signal lights, break lights, and head lights with beams for black midsize truck Turn signals blink and break lights stay on for a short period of time after being touched </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Donald Coomes </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 9 September 2006 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 20 October 2019 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> subject </i> </td>
			<td> ground vehicle </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit, Winds3d, and Flux Studio </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Truck/LightsAndTurnSignals.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Truck/LightsAndTurnSignals.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="../../../../GroundVehicles/Truck/../../license.html">../../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Donald Coomes
 */

public class LightsAndTurnSignals
{
	/** Default constructor to create this object. */
	public LightsAndTurnSignals ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_1)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("LightsAndTurnSignals.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Turn signal lights, break lights, and head lights with beams for black midsize truck Turn signals blink and break lights stay on for a short period of time after being touched"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Donald Coomes"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("9 September 2006"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_SUBJECT    ).setContent("ground vehicle"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit, Winds3d, and Flux Studio"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/GroundVehicles/Truck/LightsAndTurnSignals.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("LightsAndTurnSignals.x3d"))
    .addChild(new Transform("HeadLights")
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("Lights").setDiffuseColor(1.0,1.0,1.0).setTransparency(.1)))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(getIndexedFaceSet_5_14_colorIndex()).setCoordIndex(getIndexedFaceSet_5_14_coordIndex())
          .setCoord(new Coordinate().setPoint(getCoordinate_6_14_point())))))
    .addChild(new Transform("RearLftTurnSignal")
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("LftYellow2").setDiffuseColor(.8,.8,0.0).setEmissiveColor(.1,.1,0.0).setTransparency(.1)))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(new int[] {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1}).setCoordIndex(new int[] {0,1,19,-1,0,19,18,-1,0,18,16,-1,0,16,17,-1,7,6,5,-1,5,6,4,-1,5,4,2,-1,2,4,3,-1,2,3,0,-1,0,3,1,-1,0,17,23,-1,0,23,2,-1,1,3,21,-1,1,21,19,-1,2,3,11,-1,2,11,10,-1,2,10,8,-1,2,8,9,-1,2,9,15,-1,2,15,5,-1,2,23,22,-1,2,22,20,-1,2,20,21,-1,2,21,3,-1,3,4,13,-1,3,13,11,-1,4,5,15,-1,4,15,14,-1,4,14,12,-1,4,12,13,-1,4,6,28,-1,4,28,27,-1,4,27,26,-1,4,26,24,-1,4,24,25,-1,4,25,5,-1,5,25,29,-1,5,29,7,-1,6,7,29,-1,6,29,28,-1,8,10,12,-1,8,12,14,-1,8,14,15,-1,8,15,9,-1,10,11,13,-1,10,13,12,-1,16,18,20,-1,16,20,22,-1,16,22,23,-1,16,23,17,-1,18,19,21,-1,18,21,20,-1,24,26,30,-1,24,30,31,-1,24,31,29,-1,24,29,25,-1,26,27,28,-1,26,28,30,-1,28,29,31,-1,28,31,30,-1})
          .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {2.0619,.19755,-5.99651,2.06346,.07163,-5.99651,2.00167,.19755,-6.1023,2.00277,.07163,-6.1012,1.9182,.07161,-6.18577,1.9171,.19753,-6.18687,1.77705,.07161,-6.20161,1.77549,.19753,-6.20161,2.00173,.19048,-6.1391,2.00167,.19755,-6.12048,2.00271,.07869,-6.13813,2.00277,.07163,-6.11938,1.91814,.07868,-6.22269,1.9182,.07161,-6.20395,1.91716,.19047,-6.22367,1.9171,.19753,-6.20505,2.06199,.19048,-6.03338,2.0619,.19755,-6.01469,2.06337,.07869,-6.03338,2.06346,.07163,-6.01469,2.00271,.07869,-6.13813,2.00277,.07163,-6.11938,2.00173,.19048,-6.1391,2.00167,.19755,-6.12048,1.91716,.19047,-6.22367,1.9171,.19753,-6.20505,1.91814,.07868,-6.22269,1.9182,.07161,-6.20395,1.77705,.07161,-6.21979,1.77549,.19753,-6.21979,1.79554,.07868,-6.2365,1.79415,.19047,-6.23644})))))
      .addChild(new TimeSensor("TurnClock").setCycleInterval(1.5).setEnabled(false).setLoop(true))
      .addChild(new TouchSensor("TurnSensor").setDescription("Touch to signal left turn"))
      .addChild(new ColorInterpolator("ColorINT").setKey(new double[] {0.0,.35,.65,1.0}).setKeyValue(new MFColor(new double[] {.8,.8,0.0,1.0,1.0,0.0,1.0,1.0,0.0,.8,.8,0.0})))
      .addChild(new ColorInterpolator("ColorINT2").setKey(new double[] {0.0,.35,.65,1.0}).setKeyValue(new MFColor(new double[] {.1,.1,0.0,1.0,1.0,0.0,1.0,1.0,0.0,.1,.1,0.0})))
      .addChild(new Transform("FrntLftTurnSignal").setTranslation(.017,0.0,0.0)
        .addChild(new Shape()
          .setAppearance(new Appearance()
            .setMaterial(new Material().setUSE("LftYellow2")))
          .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(new int[] {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1}).setCoordIndex(new int[] {0,1,10,-1,0,10,9,-1,0,9,7,-1,0,7,8,-1,0,4,16,-1,0,16,15,-1,0,5,2,-1,0,2,1,-1,0,1,3,-1,0,3,4,-1,0,8,6,-1,0,6,5,-1,0,15,14,-1,0,14,12,-1,0,12,13,-1,0,13,1,-1,1,2,11,-1,1,11,10,-1,1,13,17,-1,1,17,3,-1,2,5,6,-1,2,6,11,-1,3,17,16,-1,3,16,4,-1,6,8,7,-1,6,7,21,-1,6,21,20,-1,6,20,11,-1,7,9,20,-1,7,20,21,-1,9,10,11,-1,9,11,20,-1,12,14,18,-1,12,18,19,-1,12,19,17,-1,12,17,13,-1,14,15,16,-1,14,16,18,-1,16,17,19,-1,16,19,18,-1})
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {1.91009,.38481,3.36193,2.05975,.1272,3.36789,2.05975,.22896,3.17858,1.89497,.1272,3.37856,1.84224,.3816,3.37856,1.9716,.39263,3.25271,1.9716,.39263,3.26347,1.91495,.37644,3.38255,1.91009,.38481,3.37268,2.05489,.13556,3.38813,2.05975,.1272,3.37864,2.05975,.22896,3.18933,2.05489,.13556,3.38813,2.05975,.1272,3.37864,1.91495,.37644,3.38255,1.91009,.38481,3.37268,1.84224,.3816,3.38931,1.89497,.1272,3.38931,1.85396,.37255,3.39814,1.90274,.13684,3.39752,2.05392,.23155,3.2106,1.97339,.38388,3.27979})))))))
    .addChild(new Transform()
      .addChild(new Shape("BreakLights")
        .setAppearance(new Appearance()
          .setMaterial(new Material("Red").setDiffuseColor(.7,0.0,0.0)))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(getIndexedFaceSet_5_36_colorIndex()).setCoordIndex(getIndexedFaceSet_5_36_coordIndex())
          .setCoord(new Coordinate().setPoint(getCoordinate_6_36_point()))))
      .addChild(new TimeSensor("BreakClock").setCycleInterval(10))
      .addChild(new TouchSensor("BreakSensor").setDescription("Touch to turn on break lights for a few seconds"))
      .addChild(new ColorInterpolator("BreakColor1").setKey(new double[] {0.0,.1,.9,1.0}).setKeyValue(new MFColor(new double[] {.7,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,.7,0.0,0.0})))
      .addChild(new ColorInterpolator("BreakColor2").setKey(new double[] {0.0,.1,.9,1.0}).setKeyValue(new MFColor(new double[] {.1,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,.1,0.0,0.0}))))
    .addChild(new Transform("LightBeams")
      .addChild(new Group("Import_LightBeams_wrl")
        .addChild(new Transform()
          .addChild(new Shape()
            .setAppearance(new Appearance()
              .setMaterial(new Material("WhiteLight").setAmbientIntensity(1).setDiffuseColor(1.0,1.0,1.0).setTransparency(.6)))
            .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setCoordIndex(new int[] {0,1,17,-1,0,17,16,-1,0,15,14,-1,0,14,13,-1,0,13,12,-1,0,12,11,-1,0,11,10,-1,0,10,9,-1,0,9,8,-1,0,8,7,-1,0,7,6,-1,0,6,5,-1,0,5,4,-1,0,4,3,-1,0,3,2,-1,0,2,1,-1,0,16,31,-1,0,31,15,-1,1,2,18,-1,1,18,17,-1,2,3,19,-1,2,19,18,-1,3,4,20,-1,3,20,19,-1,4,5,21,-1,4,21,20,-1,5,6,22,-1,5,22,21,-1,6,7,23,-1,6,23,22,-1,7,8,24,-1,7,24,23,-1,8,9,25,-1,8,25,24,-1,9,10,26,-1,9,26,25,-1,10,11,27,-1,10,27,26,-1,11,12,28,-1,11,28,27,-1,12,13,29,-1,12,29,28,-1,13,14,30,-1,13,30,29,-1,14,15,31,-1,14,31,30,-1,16,17,18,-1,16,18,19,-1,16,19,20,-1,16,20,21,-1,16,21,22,-1,16,22,23,-1,16,23,24,-1,16,24,25,-1,16,25,26,-1,16,26,27,-1,16,27,28,-1,16,28,29,-1,16,29,30,-1,16,30,31,-1})
              .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {1.82312,.22638,3.40709,1.83295,.28461,3.407,1.81135,.34233,3.40707,1.76159,.39078,3.40729,1.69126,.42257,3.40763,1.61105,.43285,3.40804,1.53319,.42008,3.40845,1.46952,.38618,3.40881,1.42974,.33633,3.40905,1.41991,.2781,3.40914,1.44151,.22038,3.40907,1.49127,.17193,3.40885,1.56161,.14014,3.40851,1.64181,.12986,3.4081,1.71967,.14263,3.40769,1.78334,.17653,3.40733,4.68027,-1.51061,40.7018,4.83764,-.57903,40.7003,4.49195,.34463,40.7014,3.69584,1.11975,40.7049,2.57049,1.62834,40.7104,1.28723,1.79295,40.7169,.04143,1.58854,40.7235,-.97725,1.04622,40.7292,-1.61372,.24855,40.7331,-1.7711,-.68303,40.7346,-1.42541,-1.60669,40.7335,-.62929,-2.38182,40.73,.49606,-2.8904,40.7245,1.77931,-3.05502,40.718,3.02511,-2.8506,40.7113,4.04379,-2.30828,40.7057})))))
          .addChild(new Shape()
            .setAppearance(new Appearance()
              .setMaterial(new Material().setUSE("WhiteLight")))
            .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setCoordIndex(new int[] {0,1,17,-1,0,17,16,-1,0,15,14,-1,0,14,13,-1,0,13,12,-1,0,12,11,-1,0,11,10,-1,0,10,9,-1,0,9,8,-1,0,8,7,-1,0,7,6,-1,0,6,5,-1,0,5,4,-1,0,4,3,-1,0,3,2,-1,0,2,1,-1,0,16,31,-1,0,31,15,-1,1,2,18,-1,1,18,17,-1,2,3,19,-1,2,19,18,-1,3,4,20,-1,3,20,19,-1,4,5,21,-1,4,21,20,-1,5,6,22,-1,5,22,21,-1,6,7,23,-1,6,23,22,-1,7,8,24,-1,7,24,23,-1,8,9,25,-1,8,25,24,-1,9,10,26,-1,9,26,25,-1,10,11,27,-1,10,27,26,-1,11,12,28,-1,11,28,27,-1,12,13,29,-1,12,29,28,-1,13,14,30,-1,13,30,29,-1,14,15,31,-1,14,31,30,-1,16,17,18,-1,16,18,19,-1,16,19,20,-1,16,20,21,-1,16,21,22,-1,16,22,23,-1,16,23,24,-1,16,24,25,-1,16,25,26,-1,16,26,27,-1,16,27,28,-1,16,28,29,-1,16,29,30,-1,16,30,31,-1})
              .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {-1.43536,.22638,3.40709,-1.42552,.28461,3.407,-1.44713,.34233,3.40707,-1.49689,.39078,3.40729,-1.56722,.42257,3.40763,-1.64742,.43285,3.40804,-1.72529,.42008,3.40845,-1.78895,.38618,3.40881,-1.82873,.33633,3.40905,-1.83857,.2781,3.40914,-1.81696,.22038,3.40907,-1.76721,.17193,3.40885,-1.69687,.14014,3.40851,-1.61667,.12986,3.4081,-1.53881,.14263,3.40769,-1.47514,.17653,3.40733,1.42179,-1.51061,40.7018,1.57916,-.57903,40.7003,1.23348,.34463,40.7014,.43736,1.11975,40.7049,-.68799,1.62834,40.7104,-1.97125,1.79295,40.7169,-3.21705,1.58854,40.7235,-4.23572,1.04622,40.7292,-4.8722,.24855,40.7331,-5.02958,-.68303,40.7346,-4.68389,-1.60669,40.7335,-3.88777,-2.38182,40.73,-2.76242,-2.8904,40.7245,-1.47917,-3.05502,40.718,-.23337,-2.8506,40.7113,.78531,-2.30828,40.7057}))))))))
    .addChild(new Transform("FrntRtTurnSignal").setTranslation(-.017,0.0,0.0)
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("Yellow2").setDiffuseColor(.8,.8,0.0).setEmissiveColor(.1,.1,0.0).setTransparency(.1)))
        .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(new int[] {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1}).setCoordIndex(new int[] {0,1,13,-1,0,13,12,-1,0,12,16,-1,0,16,17,-1,0,2,5,-1,0,5,1,-1,0,1,4,-1,0,4,3,-1,0,3,10,-1,0,10,9,-1,0,9,8,-1,0,8,6,-1,0,6,7,-1,0,7,1,-1,0,17,15,-1,0,15,2,-1,1,5,14,-1,1,14,13,-1,1,7,11,-1,1,11,4,-1,2,15,14,-1,2,14,5,-1,3,4,11,-1,3,11,10,-1,6,8,20,-1,6,20,21,-1,6,21,11,-1,6,11,7,-1,8,9,10,-1,8,10,20,-1,10,11,21,-1,10,21,20,-1,12,13,14,-1,12,14,18,-1,12,18,19,-1,12,19,16,-1,14,15,19,-1,14,19,18,-1,15,17,16,-1,15,16,19,-1})
          .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {-2.05975,.1272,3.36789,-1.91009,.38481,3.36193,-2.05975,.22896,3.17858,-1.89497,.1272,3.37856,-1.84224,.3816,3.37856,-1.9716,.39263,3.25271,-1.91495,.37644,3.38255,-1.91009,.38481,3.37268,-2.05489,.13556,3.38813,-2.05975,.1272,3.37864,-1.89497,.1272,3.38931,-1.84224,.3816,3.38931,-1.91495,.37644,3.38255,-1.91009,.38481,3.37268,-1.9716,.39263,3.26347,-2.05975,.22896,3.18933,-2.05489,.13556,3.38813,-2.05975,.1272,3.37864,-1.97339,.38388,3.27979,-2.05392,.23155,3.2106,-1.90274,.13684,3.39752,-1.85396,.37255,3.39814})))))
      .addChild(new TimeSensor("TurnClock2").setCycleInterval(1.5).setEnabled(false).setLoop(true))
      .addChild(new TouchSensor("TurnSensor2").setDescription("Touch to signal right turn"))
      .addChild(new ColorInterpolator("ColorINT3").setKey(new double[] {0.0,.35,.65,1.0}).setKeyValue(new MFColor(new double[] {.8,.8,0.0,1.0,1.0,0.0,1.0,1.0,0.0,.8,.8,0.0})))
      .addChild(new ColorInterpolator("ColorINT4").setKey(new double[] {0.0,.35,.65,1.0}).setKeyValue(new MFColor(new double[] {.1,.1,0.0,1.0,1.0,0.0,1.0,1.0,0.0,.1,.1,0.0})))
      .addChild(new Transform("RearRtTurnSignal")
        .addChild(new Shape()
          .setAppearance(new Appearance()
            .setMaterial(new Material().setUSE("Yellow2")))
          .setGeometry(new IndexedFaceSet().setCreaseAngle(0.524).setColorIndex(new int[] {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1}).setCoordIndex(new int[] {0,1,19,-1,0,19,18,-1,0,18,16,-1,0,16,17,-1,1,0,5,-1,5,0,4,-1,5,4,2,-1,2,4,3,-1,2,3,6,-1,6,3,7,-1,0,17,23,-1,0,23,4,-1,1,5,21,-1,1,21,19,-1,2,3,11,-1,2,11,10,-1,2,10,8,-1,2,8,9,-1,2,6,28,-1,2,28,27,-1,2,9,15,-1,2,15,5,-1,2,27,26,-1,2,26,24,-1,2,24,25,-1,2,25,3,-1,3,4,13,-1,3,13,11,-1,3,25,29,-1,3,29,7,-1,4,5,15,-1,4,15,14,-1,4,14,12,-1,4,12,13,-1,4,23,22,-1,4,22,20,-1,4,20,21,-1,4,21,5,-1,6,7,29,-1,6,29,28,-1,8,10,12,-1,8,12,14,-1,8,14,15,-1,8,15,9,-1,10,11,13,-1,10,13,12,-1,16,18,20,-1,16,20,22,-1,16,22,23,-1,16,23,17,-1,18,19,21,-1,18,21,20,-1,24,26,30,-1,24,30,31,-1,24,31,29,-1,24,29,25,-1,26,27,28,-1,26,28,30,-1,28,29,31,-1,28,31,30,-1})
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {-2.05603,.06977,-5.99651,-2.05759,.19569,-5.99651,-1.90925,.1957,-6.16734,-1.90816,.06978,-6.16844,-1.99273,.06977,-6.08387,-1.99383,.19569,-6.08277,-1.76349,.1957,-6.18318,-1.76504,.06978,-6.18318,-1.90919,.18864,-6.20426,-1.90925,.1957,-6.18552,-1.90822,.07684,-6.20524,-1.90816,.06978,-6.18661,-1.99279,.07683,-6.12067,-1.99273,.06977,-6.10205,-1.99377,.18862,-6.1197,-1.99383,.19569,-6.10095,-2.05612,.07683,-6.03338,-2.05603,.06977,-6.01469,-2.0575,.18862,-6.03338,-2.05759,.19569,-6.01469,-1.99377,.18862,-6.1197,-1.99383,.19569,-6.10095,-1.99279,.07683,-6.12067,-1.99273,.06977,-6.10205,-1.90822,.07684,-6.20524,-1.90816,.06978,-6.18661,-1.90919,.18864,-6.20426,-1.90925,.1957,-6.18552,-1.76349,.1957,-6.20136,-1.76504,.06978,-6.20136,-1.78216,.18864,-6.2181,-1.78353,.07684,-6.21806})))))))
    .addChild(new ROUTE().setFromNode("TurnClock").setFromField("fraction_changed").setToNode("ColorINT").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("TurnClock").setFromField("fraction_changed").setToNode("ColorINT2").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("ColorINT").setFromField("value_changed").setToNode("LftYellow2").setToField("set_diffuseColor"))
    .addChild(new ROUTE().setFromNode("ColorINT2").setFromField("value_changed").setToNode("LftYellow2").setToField("set_emissiveColor"))
    .addChild(new ROUTE().setFromNode("TurnSensor").setFromField("isOver").setToNode("TurnClock").setToField("set_enabled"))
    .addChild(new ROUTE().setFromNode("TurnClock2").setFromField("fraction_changed").setToNode("ColorINT3").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("TurnClock2").setFromField("fraction_changed").setToNode("ColorINT4").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("ColorINT3").setFromField("value_changed").setToNode("Yellow2").setToField("set_diffuseColor"))
    .addChild(new ROUTE().setFromNode("ColorINT4").setFromField("value_changed").setToNode("Yellow2").setToField("set_emissiveColor"))
    .addChild(new ROUTE().setFromNode("TurnSensor2").setFromField("isOver").setToNode("TurnClock2").setToField("set_enabled"))
    .addChild(new ROUTE().setFromNode("BreakClock").setFromField("fraction_changed").setToNode("BreakColor1").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("BreakClock").setFromField("fraction_changed").setToNode("BreakColor2").setToField("set_fraction"))
    .addChild(new ROUTE().setFromNode("BreakColor1").setFromField("value_changed").setToNode("Red").setToField("set_diffuseColor"))
    .addChild(new ROUTE().setFromNode("BreakColor2").setFromField("value_changed").setToNode("Red").setToField("set_emissiveColor"))
    .addChild(new ROUTE().setFromNode("BreakSensor").setFromField("touchTime").setToNode("BreakClock").setToField("startTime")));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method

		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_14_colorIndex_1()
		{
			int[] value = {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1};
			return value;
		}


		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_14_coordIndex_1()
		{
			int[] value = {2,1,17,-1,2,17,16,-1,2,16,7,-1,2,7,3,-1,1,0,19,-1,1,19,18,-1,1,18,17,-1,19,0,4,-1,1,5,27,-1,1,27,50,-1,1,50,51,-1,1,46,45,-1,1,45,26,-1,1,26,5,-1,2,6,25,-1,2,25,47,-1,2,47,48,-1,2,41,40,-1,2,40,24,-1,2,24,6,-1,4,5,35,-1,4,35,77,-1,4,77,78,-1,4,53,52,-1,4,52,27,-1,4,27,5,-1,5,6,34,-1,5,34,33,-1,5,18,80,-1,5,80,79,-1,5,79,35,-1,5,26,25,-1,5,25,6,-1,5,33,75,-1,5,75,76,-1,5,76,18,-1,6,7,69,-1,6,69,68,-1,6,68,32,-1,6,17,74,-1,6,74,73,-1,6,73,34,-1,6,24,43,-1,6,43,44,-1,6,44,7,-1,6,32,71,-1,6,71,72,-1,6,72,17,-1,20,21,10,-1,10,21,22,-1,10,22,11,-1,11,22,23,-1,11,23,15,-1,9,8,12,-1,9,12,20,-1,9,20,10,-1,9,13,28,-1,9,28,55,-1,9,55,56,-1,9,60,59,-1,9,59,30,-1,9,30,13,-1,10,14,29,-1,10,29,61,-1,10,61,62,-1,10,64,63,-1,10,63,31,-1,10,31,14,-1,12,13,36,-1,12,36,82,-1,12,82,83,-1,12,58,57,-1,12,57,28,-1,12,28,13,-1,13,14,38,-1,13,38,37,-1,13,21,85,-1,13,85,84,-1,13,84,36,-1,13,30,29,-1,13,29,14,-1,13,37,89,-1,13,89,90,-1,13,90,21,-1,14,15,92,-1,14,92,91,-1,14,91,39,-1,14,22,88,-1,14,88,87,-1,14,87,38,-1,14,31,66,-1,14,66,67,-1,14,67,15,-1,14,39,94,-1,14,94,95,-1,14,95,22,-1,24,40,103,-1,24,103,43,-1,25,26,45,-1,25,45,47,-1,27,52,98,-1,27,98,50,-1,28,57,100,-1,28,100,55,-1,29,30,59,-1,29,59,61,-1,31,63,96,-1,31,96,66,-1,32,68,99,-1,32,99,71,-1,33,34,73,-1,33,73,75,-1,35,79,101,-1,35,101,77,-1,36,84,97,-1,36,97,82,-1,37,38,87,-1,37,87,89,-1,39,91,102,-1,39,102,94,-1,40,41,42,-1,40,42,103,-1,42,44,43,-1,42,43,103,-1,45,46,48,-1,45,48,47,-1,49,51,50,-1,49,50,98,-1,49,98,52,-1,49,52,53,-1,54,56,55,-1,54,55,100,-1,54,100,57,-1,54,57,58,-1,59,60,62,-1,59,62,61,-1,63,64,65,-1,63,65,96,-1,65,67,66,-1,65,66,96,-1,68,69,70,-1,68,70,99,-1,70,72,71,-1,70,71,99,-1,73,74,76,-1,73,76,75,-1,77,101,81,-1,77,81,78,-1,79,80,81,-1,79,81,101,-1,82,97,86,-1,82,86,83,-1,84,85,86,-1,84,86,97,-1,87,88,90,-1,87,90,89,-1,91,92,93,-1,91,93,102,-1,93,95,94,-1,93,94,102,-1};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getCoordinate_6_14_point_1()
		{
			double[] value = {1.40063,.1272,3.41801,1.56541,.1272,3.40094,1.73019,.1272,3.39198,1.89497,.1272,3.37918,1.38745,.3816,3.41801,1.53904,.3816,3.40094,1.69064,.3816,3.39198,1.84224,.3816,3.37918,-1.89497,.1272,3.37918,-1.73019,.1272,3.39198,-1.56541,.1272,3.40094,-1.40063,.1272,3.41801,-1.84224,.3816,3.37918,-1.69064,.3816,3.39198,-1.53904,.3816,3.40094,-1.38745,.3816,3.41801,1.70822,.44566,3.35642,1.59012,.44566,3.37491,1.47203,.44566,3.38956,1.41893,.44566,3.41232,-1.70822,.44566,3.35642,-1.59012,.44566,3.37491,-1.47203,.44566,3.38956,-1.39727,.44566,3.41232,1.69064,.3816,3.41119,1.69064,.3816,3.41119,1.53904,.3816,3.42015,1.53904,.3816,3.42015,-1.69064,.3816,3.41119,-1.53904,.3816,3.42015,-1.69064,.3816,3.41119,-1.53904,.3816,3.42015,1.69064,.3816,3.41119,1.53904,.3816,3.42015,1.69064,.3816,3.41119,1.53904,.3816,3.42015,-1.69064,.3816,3.41119,-1.69064,.3816,3.41119,-1.53904,.3816,3.42015,-1.53904,.3816,3.42015,1.72724,.14618,3.41119,1.73019,.1272,3.39198,1.89497,.1272,3.37918,1.8231,.3816,3.4,1.84224,.3816,3.37918,1.56343,.1463,3.42015,1.56541,.1272,3.40094,1.72724,.14618,3.41119,1.73019,.1272,3.39198,1.40063,.1272,3.41801,1.56343,.1463,3.42015,1.56541,.1272,3.40094,1.40653,.3816,3.43506,1.38745,.3816,3.41801,-1.89497,.1272,3.37918,-1.72724,.14618,3.41119,-1.73019,.1272,3.39198,-1.8231,.3816,3.4,-1.84224,.3816,3.37918,-1.72724,.14618,3.41119,-1.73019,.1272,3.39198,-1.56343,.1463,3.42015,-1.56541,.1272,3.40094,-1.56343,.1463,3.42015,-1.56541,.1272,3.40094,-1.40063,.1272,3.41801,-1.40653,.3816,3.43506,-1.38745,.3816,3.41801,1.8231,.3816,3.4,1.84224,.3816,3.37918,1.70822,.44566,3.35642,1.60616,.43544,3.39684,1.59012,.44566,3.37491,1.60616,.43544,3.39684,1.59012,.44566,3.37491,1.48581,.43249,3.41111,1.47203,.44566,3.38956,1.40653,.3816,3.43506,1.38745,.3816,3.41801,1.48581,.43249,3.41111,1.47203,.44566,3.38956,1.41893,.44566,3.41232,-1.8231,.3816,3.4,-1.84224,.3816,3.37918,-1.60616,.43544,3.39684,-1.59012,.44566,3.37491,-1.70822,.44566,3.35642,-1.48581,.43249,3.41111,-1.47203,.44566,3.38956,-1.60616,.43544,3.39684,-1.59012,.44566,3.37491,-1.40653,.3816,3.43506,-1.38745,.3816,3.41801,-1.39727,.44566,3.41232,-1.48581,.43249,3.41111,-1.47203,.44566,3.38956,-1.41875,.14641,3.4351,-1.70435,.42853,3.38504,1.41875,.14641,3.4351,1.70435,.42853,3.38504};
			return value;
		}
		private double[] getCoordinate_6_14_point_2()
		{
			double[] value = {-1.87144,.14641,3.40001,1.43137,.42722,3.43256,-1.414,.42725,3.43248,1.87144,.14641,3.40001};
			return value;
		}


		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_36_colorIndex_1()
		{
			int[] value = {0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0,-1};
			return value;
		}


		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_36_coordIndex_1()
		{
			int[] value = {0,1,43,-1,0,43,42,-1,0,42,40,-1,0,40,41,-1,15,14,11,-1,11,14,10,-1,11,10,8,-1,8,10,9,-1,8,9,0,-1,0,9,1,-1,0,41,47,-1,0,47,8,-1,1,9,45,-1,1,45,43,-1,2,3,27,-1,2,27,26,-1,2,26,24,-1,2,24,25,-1,3,2,7,-1,7,2,6,-1,7,6,4,-1,4,6,5,-1,4,5,12,-1,12,5,13,-1,2,25,31,-1,2,31,6,-1,3,7,29,-1,3,29,27,-1,4,5,19,-1,4,19,18,-1,4,18,16,-1,4,16,17,-1,4,12,52,-1,4,52,51,-1,4,17,23,-1,4,23,7,-1,4,51,50,-1,4,50,48,-1,4,48,49,-1,4,49,5,-1,5,6,21,-1,5,21,19,-1,5,49,53,-1,5,53,13,-1,6,7,23,-1,6,23,22,-1,6,22,20,-1,6,20,21,-1,6,31,30,-1,6,30,28,-1,6,28,29,-1,6,29,7,-1,8,9,35,-1,8,35,34,-1,8,34,32,-1,8,32,33,-1,8,33,39,-1,8,39,11,-1,8,47,46,-1,8,46,44,-1,8,44,45,-1,8,45,9,-1,9,10,37,-1,9,37,35,-1,10,11,39,-1,10,39,38,-1,10,38,36,-1,10,36,37,-1,10,14,58,-1,10,58,57,-1,10,57,56,-1,10,56,54,-1,10,54,55,-1,10,55,11,-1,11,55,59,-1,11,59,15,-1,12,13,53,-1,12,53,52,-1,14,15,59,-1,14,59,58,-1,16,18,20,-1,16,20,22,-1,16,22,23,-1,16,23,17,-1,18,19,21,-1,18,21,20,-1,24,26,28,-1,24,28,30,-1,24,30,31,-1,24,31,25,-1,26,27,29,-1,26,29,28,-1,32,34,36,-1,32,36,38,-1,32,38,39,-1,32,39,33,-1,34,35,37,-1,34,37,36,-1,40,42,44,-1,40,44,46,-1,40,46,47,-1,40,47,41,-1,42,43,45,-1,42,45,44,-1,48,50,62,-1,48,62,63,-1,48,63,53,-1,48,53,49,-1,50,51,52,-1,50,52,62,-1,52,53,63,-1,52,63,62,-1,54,56,60,-1,54,60,61,-1,54,61,59,-1,54,59,55,-1,56,57,58,-1,56,58,60,-1,58,59,61,-1,58,61,60,-1};
			return value;
		}


		/** Large attribute array: IndexedFaceSet colorIndex field, scene-graph level=5, element #14, 640 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_14_colorIndex()
		{
			MFInt32 IndexedFaceSet_5_14_colorIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_14_colorIndex_1()));
			return IndexedFaceSet_5_14_colorIndex;
		}
		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=5, element #14, 640 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_14_coordIndex()
		{
			MFInt32 IndexedFaceSet_5_14_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_14_coordIndex_1()));
			return IndexedFaceSet_5_14_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=6, element #14, 312 total numbers made up of 104 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_6_14_point()
		{
			MFVec3f Coordinate_6_14_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_6_14_point_1()))
				.append(new MFVec3f(getCoordinate_6_14_point_2()));
			return Coordinate_6_14_point;
		}
		/** Large attribute array: IndexedFaceSet colorIndex field, scene-graph level=5, element #36, 480 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_36_colorIndex()
		{
			MFInt32 IndexedFaceSet_5_36_colorIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_36_colorIndex_1()));
			return IndexedFaceSet_5_36_colorIndex;
		}
		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=5, element #36, 480 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_36_coordIndex()
		{
			MFInt32 IndexedFaceSet_5_36_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_36_coordIndex_1()));
			return IndexedFaceSet_5_36_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=6, element #36, 192 total numbers made up of 64 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_6_36_point()
		{
			MFVec3f Coordinate_6_36_point = new MFVec3f(new double[] {2.0619,.53766,-5.99651,2.06346,.20454,-5.99651,-2.05603,.19962,-5.99651,-2.05759,.53274,-5.99651,-1.90925,.53278,-6.16734,-1.90816,.19966,-6.16844,-1.99273,.19962,-6.08387,-1.99383,.53274,-6.08277,2.00167,.53766,-6.1023,2.00277,.20454,-6.1012,1.9182,.2045,-6.18577,1.9171,.53763,-6.18687,-1.76349,.53278,-6.18318,-1.76504,.19966,-6.18318,1.77705,.2045,-6.20161,1.77549,.53763,-6.20161,-1.90919,.51409,-6.20426,-1.90925,.53278,-6.18552,-1.90822,.21834,-6.20524,-1.90816,.19966,-6.18661,-1.99279,.2183,-6.12067,-1.99273,.19962,-6.10205,-1.99377,.51405,-6.1197,-1.99383,.53274,-6.10095,-2.05612,.2183,-6.03338,-2.05603,.19962,-6.01469,-2.0575,.51405,-6.03338,-2.05759,.53274,-6.01469,-1.99377,.51405,-6.1197,-1.99383,.53274,-6.10095,-1.99279,.2183,-6.12067,-1.99273,.19962,-6.10205,2.00173,.51898,-6.1391,2.00167,.53766,-6.12048,2.00271,.22323,-6.13813,2.00277,.20454,-6.11938,1.91814,.22319,-6.22269,1.9182,.2045,-6.20395,1.91716,.51894,-6.22367,1.9171,.53763,-6.20505,2.06199,.51898,-6.03338,2.0619,.53766,-6.01469,2.06337,.22323,-6.03338,2.06346,.20454,-6.01469,2.00271,.22323,-6.13813,2.00277,.20454,-6.11938,2.00173,.51898,-6.1391,2.00167,.53766,-6.12048,-1.90822,.21834,-6.20524,-1.90816,.19966,-6.18661,-1.90919,.51409,-6.20426,-1.90925,.53278,-6.18552,-1.76349,.53278,-6.20136,-1.76504,.19966,-6.20136,1.91716,.51894,-6.22367,1.9171,.53763,-6.20505,1.91814,.22319,-6.22269,1.9182,.2045,-6.20395,1.77705,.2045,-6.21979,1.77549,.53763,-6.21979,1.79554,.22319,-6.2365,1.79415,.51894,-6.23644,-1.78216,.51409,-6.2181,-1.78353,.21834,-6.21806});
			return Coordinate_6_36_point;
		}

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return LightsAndTurnSignals model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new LightsAndTurnSignals().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"Savage.GroundVehicles.Truck.LightsAndTurnSignals\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("Savage.GroundVehicles.Truck.LightsAndTurnSignals self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // GroundVehicles/Truck/LightsAndTurnSignals_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "GroundVehicles/Truck/LightsAndTurnSignals_JavaExport.x3d"; 
                String filenameX3DV = "GroundVehicles/Truck/LightsAndTurnSignals_JavaExport.x3dv"; 
                String filenameJSON = "GroundVehicles/Truck/LightsAndTurnSignals_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
