require "java"
require "../../../X3DJSAIL.4.0.full.jar"

ConfigurationProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ConfigurationProperties")
CommentsBlock = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.CommentsBlock")
AcousticProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.AcousticProperties")
Analyser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Analyser")
Anchor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Anchor")
Appearance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Appearance")
Arc2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Arc2D")
ArcClose2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.ArcClose2D")
AudioClip = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioClip")
AudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioDestination")
Background = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Background")
BallJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.BallJoint")
Billboard = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Billboard")
BiquadFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BiquadFilter")
BlendedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyle")
BooleanFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanFilter")
BooleanSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanSequencer")
BooleanToggle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanToggle")
BooleanTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanTrigger")
BoundaryEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyle")
BoundedPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModel")
Box = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Box")
BufferAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BufferAudioSource")
CADAssembly = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADAssembly")
CADFace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADFace")
CADLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADLayer")
CADPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADPart")
CartoonVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyle")
ChannelMerger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelMerger")
ChannelSelector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSelector")
ChannelSplitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSplitter")
Circle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Circle2D")
ClipPlane = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ClipPlane")
CollidableOffset = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffset")
CollidableShape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShape")
Collision = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Collision")
CollisionCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollection")
CollisionSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensor")
CollisionSpace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpace")
Color = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Color")
ColorChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorChaser")
ColorDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorDamper")
ColorInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ColorInterpolator")
ColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ColorRGBA")
ComposedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTexture")
ComposedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ComposedShader")
ComposedTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ComposedTexture3D")
ComposedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyle")
Cone = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cone")
ConeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ConeEmitter")
Contact = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.Contact")
Contour2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.Contour2D")
ContourPolyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.ContourPolyline2D")
Convolver = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Convolver")
Coordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Coordinate")
CoordinateChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateChaser")
CoordinateDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateDamper")
CoordinateDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.CoordinateDouble")
CoordinateInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator")
CoordinateInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2D")
Cylinder = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cylinder")
CylinderSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensor")
Delay = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Delay")
DirectionalLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.DirectionalLight")
DISEntityManager = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityManager")
DISEntityTypeMapping = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityTypeMapping")
Disk2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Disk2D")
DoubleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJoint")
DynamicsCompressor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.DynamicsCompressor")
EaseInEaseOut = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.EaseInEaseOut")
EdgeEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyle")
ElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.ElevationGrid")
EspduTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.EspduTransform")
ExplosionEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitter")
Extrusion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Extrusion")
FillProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.FillProperties")
FloatVertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.FloatVertexAttribute")
Fog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Fog")
FogCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinate")
FontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.FontStyle")
ForcePhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModel")
Gain = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Gain")
GeneratedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTexture")
GeoCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoCoordinate")
GeoElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoElevationGrid")
GeoLocation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLocation")
GeoLOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLOD")
GeoMetadata = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoMetadata")
GeoOrigin = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoOrigin")
GeoPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolator")
GeoProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoProximitySensor")
GeoTouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTouchSensor")
GeoTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTransform")
GeoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoViewpoint")
Group = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Group")
HAnimDisplacer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimDisplacer")
HAnimHumanoid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimHumanoid")
HAnimJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimJoint")
HAnimMotion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimMotion")
HAnimSegment = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSegment")
HAnimSite = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSite")
ImageCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTexture")
ImageTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.ImageTexture")
ImageTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ImageTexture3D")
IndexedFaceSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet")
IndexedLineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedLineSet")
IndexedQuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.IndexedQuadSet")
IndexedTriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSet")
IndexedTriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleSet")
IndexedTriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSet")
Inline = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Inline")
IntegerSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerSequencer")
IntegerTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerTrigger")
IsoSurfaceVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeData")
KeySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.KeySensor")
Layer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Layer")
LayerSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.LayerSet")
Layout = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.Layout")
LayoutGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutGroup")
LayoutLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutLayer")
LinePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.LinePickSensor")
LineProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.LineProperties")
LineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.LineSet")
ListenerPointSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ListenerPointSource")
LoadSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.LoadSensor")
LocalFog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.LocalFog")
LOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.LOD")
Material = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Material")
Matrix3VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix3VertexAttribute")
Matrix4VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix4VertexAttribute")
MetadataBoolean = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataBoolean")
MetadataDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataDouble")
MetadataFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataFloat")
MetadataInteger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataInteger")
MetadataSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataSet")
MetadataString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataString")
MicrophoneSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.MicrophoneSource")
MotorJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.MotorJoint")
MovieTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MovieTexture")
MultiTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTexture")
MultiTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureCoordinate")
MultiTextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureTransform")
NavigationInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.NavigationInfo")
Normal = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Normal")
NormalInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.NormalInterpolator")
NurbsCurve = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve")
NurbsCurve2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve2D")
NurbsOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolator")
NurbsPatchSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPatchSurface")
NurbsPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolator")
NurbsSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSet")
NurbsSurfaceInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolator")
NurbsSweptSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSweptSurface")
NurbsSwungSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSwungSurface")
NurbsTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinate")
NurbsTrimmedSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurface")
OpacityMapVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyle")
OrientationChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationChaser")
OrientationDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationDamper")
OrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.OrientationInterpolator")
OrthoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.OrthoViewpoint")
OscillatorSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.OscillatorSource")
PackagedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.PackagedShader")
ParticleSystem = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ParticleSystem")
PeriodicWave = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.PeriodicWave")
PhysicalMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PhysicalMaterial")
PickableGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PickableGroup")
PixelTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.PixelTexture")
PixelTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.PixelTexture3D")
PlaneSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensor")
PointEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PointEmitter")
PointLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.PointLight")
PointPickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PointPickSensor")
PointProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PointProperties")
PointSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.PointSet")
Polyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polyline2D")
PolylineEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PolylineEmitter")
Polypoint2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polypoint2D")
PositionChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser")
PositionChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser2D")
PositionDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper")
PositionDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper2D")
PositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator")
PositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator2D")
PrimitivePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PrimitivePickSensor")
ProgramShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ProgramShader")
ProjectionVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyle")
ProtoInstance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInstance")
ProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensor")
QuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.QuadSet")
ReceiverPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.ReceiverPdu")
Rectangle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Rectangle2D")
RigidBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBody")
RigidBodyCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollection")
ScalarChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarChaser")
ScalarDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarDamper")
ScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ScalarInterpolator")
ScreenFontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenFontStyle")
ScreenGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenGroup")
Script = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Scripting.Script")
SegmentedVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeData")
ShadedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyle")
ShaderPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderPart")
ShaderProgram = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderProgram")
Shape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Shape")
SignalPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.SignalPdu")
SilhouetteEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyle")
SingleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJoint")
SliderJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SliderJoint")
Sound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Sound")
SpatialSound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.SpatialSound")
Sphere = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Sphere")
SphereSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensor")
SplinePositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator")
SplinePositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2D")
SplineScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolator")
SpotLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.SpotLight")
SquadOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolator")
StaticGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.StaticGroup")
StreamAudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioDestination")
StreamAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioSource")
StringSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.StringSensor")
SurfaceEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitter")
Switch = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Switch")
TexCoordChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordChaser2D")
TexCoordDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordDamper2D")
Text = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.Text")
TextureBackground = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackground")
TextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinate")
TextureCoordinate3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3D")
TextureCoordinate4D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4D")
TextureCoordinateGenerator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinateGenerator")
TextureProjector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjector")
TextureProjectorParallel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjectorParallel")
TextureProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureProperties")
TextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureTransform")
TextureTransform3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransform3D")
TextureTransformMatrix3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3D")
TimeSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Time.TimeSensor")
TimeTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.TimeTrigger")
ToneMappedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyle")
TouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensor")
Transform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Transform")
TransformSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensor")
TransmitterPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.TransmitterPdu")
TriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleFanSet")
TriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleSet")
TriangleSet2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.TriangleSet2D")
TriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleStripSet")
TwoSidedMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.TwoSidedMaterial")
UniversalJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJoint")
UnlitMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.UnlitMaterial")
Viewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Viewpoint")
ViewpointGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.ViewpointGroup")
Viewport = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Viewport")
VisibilitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensor")
VolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.VolumeData")
VolumeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.VolumeEmitter")
VolumePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.VolumePickSensor")
WaveShaper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.WaveShaper")
WindPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModel")
WorldInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.WorldInfo")
Component = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.component")
Connect = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.connect")
EXPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.EXPORT")
ExternProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ExternProtoDeclare")
Field = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.field")
FieldValue = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.fieldValue")
Head = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.head")
IMPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.IMPORT")
IS = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.IS")
Meta = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.meta")
ProtoBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoBody")
ProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoDeclare")
ProtoInterface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInterface")
ROUTE = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ROUTE")
Scene = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.Scene")
Unit = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.unit")
X3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.X3D")
SFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFBool")
MFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFBool")
SFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColor")
MFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColor")
SFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColorRGBA")
MFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColorRGBA")
SFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFDouble")
MFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFDouble")
SFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFFloat")
MFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFFloat")
SFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFImage")
MFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFImage")
SFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFInt32")
MFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFInt32")
SFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3d")
MFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3d")
SFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3f")
MFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3f")
SFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4d")
MFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4d")
SFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4f")
MFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4f")
SFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFString")
SFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFNode")
MFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFNode")
SFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFRotation")
MFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFRotation")
MFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFString")
SFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFTime")
MFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFTime")
SFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2d")
MFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2d")
SFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2f")
MFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2f")
SFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3d")
MFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3d")
SFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3f")
MFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3f")
SFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4d")
MFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4d")
SFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4f")
MFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4f")
ConfigurationProperties.setDeleteIntermediateFiles(false);
ConfigurationProperties.setStripTrailingZeroes(true);
ConfigurationProperties.setStripDefaultAttributes(true);
ConfigurationProperties.setXsltEngine(Java::OrgWeb3dX3dJsail::ConfigurationProperties::XSLT_ENGINE_NATIVE_JAVA);
x3D0 = X3D.new
    .setProfile("Immersive")
    .setVersion("4.0")
    .setHead(Head.new()
        .addMeta(Meta.new()
            .setName("title")
            .setContent("Trebuchet.x3d")
        )
        .addMeta(Meta.new()
            .setName("description")
            .setContent("Working model of a 14th century Trebuchet Catapult.")
        )
        .addMeta(Meta.new()
            .setName("creator")
            .setContent("LT Joe Roth")
        )
        .addMeta(Meta.new()
            .setName("created")
            .setContent("20 June 2001")
        )
        .addMeta(Meta.new()
            .setName("modified")
            .setContent("20 October 2019")
        )
        .addMeta(Meta.new()
            .setName("version")
            .setContent("7.8")
        )
        .addMeta(Meta.new()
            .setName("identifier")
            .setContent("https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.x3d")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://trebuchet.com")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://members.home.net/dimona")
        )
        .addMeta(Meta.new()
            .setName("subject")
            .setContent("trebuchet catapult Monty Python")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("Permission granted for use of the VRML chicken I own a copy of Monty Python and the Holy Grail I have requested permission to use for non profit use. No response received. I will use the sound clips under \"Fair Use\" clause of the DMCA")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("https://www.web3d.org/WorkingGroups/media/textures/nature/leaves_5.jpg.htm")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://www.revemonde.net/UniversalMedia/textures/nature/leaves_5.jpg.htm")
        )
        .addMeta(Meta.new()
            .setName("generator")
            .setContent("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")
        )
        .addMeta(Meta.new()
            .setName("license")
            .setContent("../license.html")
        )
    )
    .setScene(Scene.new()
        .addChild(WorldInfo.new()
            .setTitle("Trebuchet.x3d")
        )
        .addChild(Background.new()
            .setBackUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_back.jpg"].to_java Java::java.lang.String)
            .setBottomUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_bottom.jpg"].to_java Java::java.lang.String)
            .setFrontUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_front.jpg"].to_java Java::java.lang.String)
            .setGroundAngle([1.309, 1.570796].to_java Java::float)
            .setGroundColor([0.1, 0.1, 0, 0.4, 0.25, 0.2, 0.6, 0.6, 0.6].to_java Java::float)
            .setLeftUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_left.jpg"].to_java Java::java.lang.String)
            .setRightUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_right.jpg"].to_java Java::java.lang.String)
            .setSkyAngle([1.309, 1.57079].to_java Java::float)
            .setSkyColor([0, 0.2, 0.7, 0, 0.5, 1, 1, 1, 1].to_java Java::float)
            .setTopUrl(["https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_top.jpg"].to_java Java::java.lang.String)
        )
        .addChild(Sound.new()
            .setMaxBack(1000.0)
            .setMaxFront(1000.0)
            .setSource(AudioClip.new()
                .setDEF("HolyGrail")
                .setDescription("HolyGrail")
                .setLoop(true)
                .setUrl(["holygral.mp3", "http://www.nps.navy.mil/code32/vrml/holygral.mp3"].to_java Java::java.lang.String)
            )
        )
        .addChild(Shape.new()
            .setGeometry(Box.new()
                .setSize([10000, 1, 10000].to_java Java::float)
            )
            .setAppearance(Appearance.new()
                .setTexture(ImageTexture.new()
                    .setUrl(["grass.jpg", "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/grass.jpg"].to_java Java::java.lang.String)
                )
            )
        )
        .addChild(Transform.new()
            .setRotation([0, 1, 0, 1.57].to_java Java::float)
            .setScale([0.5, 0.5, 0.5].to_java Java::float)
            .setTranslation([10.5, 6.5, 4.5].to_java Java::float)
            .addChild(Shape.new()
                .setAppearance(Appearance.new()
                    .setDEF("TextAppearance")
                    .setMaterial(Material.new()
                        .setDiffuseColor([1, 0, 0].to_java Java::float)
                        .setEmissiveColor([1, 1, 0].to_java Java::float)
                    )
                )
                .setGeometry(Text.new()
                    .setString(["Click Sling to Select Projectile"].to_java Java::java.lang.String)
                    .setFontStyle(FontStyle.new()
                    )
                )
            )
        )
        .addChild(Transform.new()
            .setRotation([0, 1, 0, 1.57].to_java Java::float)
            .setScale([0.5, 0.5, 0.5].to_java Java::float)
            .setTranslation([11, 5.5, 6].to_java Java::float)
            .addChild(Switch.new()
                .setDEF("Weight")
                .setWhichChoice(0)
                .addChild(Group.new()
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setUSE("TextAppearance")
                        )
                        .setGeometry(Text.new()
                            .setString(["Click Here to Change Counter Weight (50 lbs)"].to_java Java::java.lang.String)
                        )
                    )
                )
                .addChild(Group.new()
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setUSE("TextAppearance")
                        )
                        .setGeometry(Text.new()
                            .setString(["Click Here to Change Counter Weight (500 lbs)"].to_java Java::java.lang.String)
                        )
                    )
                )
                .addChild(Group.new()
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setUSE("TextAppearance")
                        )
                        .setGeometry(Text.new()
                            .setString(["Click Here to Change Counter Weight (1000 lbs)"].to_java Java::java.lang.String)
                        )
                    )
                )
                .addChild(Group.new()
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setUSE("TextAppearance")
                        )
                        .setGeometry(Text.new()
                            .setString(["Click Here to Change Counter Weight (10000 lbs)"].to_java Java::java.lang.String)
                        )
                    )
                )
            )
            .addChild(TouchSensor.new()
                .setDEF("weightselector")
                .setDescription("weight selector")
            )
            .addChild(Transform.new()
                .setTranslation([8, 0, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Box.new()
                        .setSize([20, 1, 1].to_java Java::float)
                    )
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setTransparency(1.0)
                        )
                    )
                )
            )
        )
        .addChild(Transform.new()
            .setRotation([0, 1, 0, 1.57].to_java Java::float)
            .setTranslation([10, 0.5, 4.5].to_java Java::float)
            .addChild(Transform.new()
                .setDEF("launch")
                .setTranslation([0, 2, 5].to_java Java::float)
                .addChild(Billboard.new()
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setDiffuseColor([1, 0, 0].to_java Java::float)
                            )
                        )
                        .setGeometry(Text.new()
                            .setString(["LAUNCH"].to_java Java::java.lang.String)
                            .setFontStyle(FontStyle.new()
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([2, 0.3, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Box.new()
                                .setSize([5, 1, 1].to_java Java::float)
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setTransparency(1.0)
                                )
                            )
                        )
                    )
                    .addChild(Switch.new()
                        .setDEF("PigdogMonk")
                        .setWhichChoice(-1)
                        .addChild(Group.new()
                            .addChild(Sound.new()
                                .setMaxBack(1000.0)
                                .setMaxFront(1000.0)
                                .setSource(AudioClip.new()
                                    .setDEF("PigDogSound")
                                    .setDescription("PigDogSound")
                                    .setUrl(["pigdog.wav", "http://www.nps.navy.mil/code32/vrml/pigdog.wav"].to_java Java::java.lang.String)
                                )
                            )
                        )
                        .addChild(Group.new()
                            .addChild(Sound.new()
                                .setMaxBack(1000.0)
                                .setMaxFront(1000.0)
                                .setSource(AudioClip.new()
                                    .setDEF("MonkSound")
                                    .setDescription("MonkSound")
                                    .setUrl(["monks.wav", "http://www.nps.navy.mil/code32/vrml/monks.wav"].to_java Java::java.lang.String)
                                )
                            )
                        )
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("Launch")
                    .setDescription("launch!")
                )
            )
            .addChild(Transform.new()
                .addChild(Switch.new()
                    .setDEF("projectilename")
                    .setWhichChoice(0)
                    .addChild(Group.new()
                        .addChild(Shape.new()
                            .setAppearance(Appearance.new()
                                .setUSE("TextAppearance")
                            )
                            .setGeometry(Text.new()
                                .setString(["Bowling Ball (10 lbs)"].to_java Java::java.lang.String)
                                .setFontStyle(FontStyle.new()
                                    .setSize(0.5)
                                )
                            )
                        )
                        .addChild(Sound.new()
                            .setMaxBack(1000.0)
                            .setMaxFront(1000.0)
                            .setPriority(1.0)
                            .setSource(AudioClip.new()
                                .setDEF("HolyHandGrenadeSound")
                                .setDescription("HolyHandGrenadeSound")
                                .setUrl(["grenade.wav", "http://www.nps.navy.mil/code32/vrml/grenade.wav"].to_java Java::java.lang.String)
                            )
                        )
                    )
                    .addChild(Group.new()
                        .addChild(Shape.new()
                            .setAppearance(Appearance.new()
                                .setUSE("TextAppearance")
                            )
                            .setGeometry(Text.new()
                                .setString(["Cow (1000 lbs)"].to_java Java::java.lang.String)
                                .setFontStyle(FontStyle.new()
                                    .setSize(0.5)
                                )
                            )
                        )
                        .addChild(Sound.new()
                            .setMaxBack(1000.0)
                            .setMaxFront(1000.0)
                            .setSource(AudioClip.new()
                                .setDEF("CowSound")
                                .setDescription("CowSound")
                                .setUrl(["lavache.wav", "http://www.nps.navy.mil/code32/vrml/lavache.wav"].to_java Java::java.lang.String)
                            )
                        )
                    )
                    .addChild(Group.new()
                        .addChild(Shape.new()
                            .setAppearance(Appearance.new()
                                .setUSE("TextAppearance")
                            )
                            .setGeometry(Text.new()
                                .setString(["Chicken (5 lbs)"].to_java Java::java.lang.String)
                                .setFontStyle(FontStyle.new()
                                    .setSize(0.5)
                                )
                            )
                        )
                        .addChild(Sound.new()
                            .setMaxBack(1000.0)
                            .setMaxFront(1000.0)
                            .setPriority(1.0)
                            .setSource(AudioClip.new()
                                .setDEF("HamsterSound")
                                .setDescription("HamsterSound")
                                .setUrl(["hamster.wav", "http://www.nps.navy.mil/code32/vrml/hamster.wav"].to_java Java::java.lang.String)
                            )
                        )
                    )
                )
            )
        )
        .addChild(Transform.new()
            .setRotation([0, 1, 0, -1.67].to_java Java::float)
            .addChild(Transform.new()
                .setDEF("aft")
                .setTranslation([5, 5, 15].to_java Java::float)
                .addChild(Transform.new()
                    .setTranslation([-2.5, -4.5, -2].to_java Java::float)
                    .addChild(Transform.new()
                        .setUSE("launch")
                    )
                )
            )
        )
        .addChild(Transform.new()
            .setTranslation([0, 3, 0].to_java Java::float)
            .addChild(Shape.new()
                .setDEF("plank")
                .setGeometry(Box.new()
                    .setSize([25, 1, 1].to_java Java::float)
                )
                .setAppearance(Appearance.new()
                    .setDEF("wood")
                    .setTexture(ImageTexture.new()
                        .setDEF("woodTexture")
                        .setUrl(["wood.gif", "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/wood.gif"].to_java Java::java.lang.String)
                    )
                )
            )
            .addChild(Transform.new()
                .setDEF("angledsupport")
                .setRotation([0, 0, 1, 1].to_java Java::float)
                .setTranslation([-5, 10, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("plank")
                )
            )
            .addChild(Transform.new()
                .setDEF("angledsupport2")
                .setRotation([0, 0, 1, -1].to_java Java::float)
                .setTranslation([5, 10, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("plank")
                )
            )
            .addChild(Transform.new()
                .setDEF("verticalsupport")
                .setRotation([0, 0, 1, 1.57].to_java Java::float)
                .setScale([0.9, 1, 1].to_java Java::float)
                .setTranslation([0, 11, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("plank")
                )
            .addComments(CommentsBlock.new("Main Verticle Support"))
            )
            .addChild(Transform.new()
                .setDEF("horizontalsupport")
                .setScale([0.4, 1, 1].to_java Java::float)
                .setTranslation([0, 10, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("plank")
                )
            )
            .addChild(Transform.new()
                .setRotation([0, 0, 1, 1.57].to_java Java::float)
                .setScale([0.6, 1, 1].to_java Java::float)
                .setTranslation([0, 5, 10].to_java Java::float)
                .addChild(Transform.new()
                    .setRotation([0, 1, 0, 0.4].to_java Java::float)
                    .addChild(Shape.new()
                        .setUSE("plank")
                    )
                )
            )
            .addChild(Transform.new()
                .setDEF("panel")
                .setTranslation([0, 18.2, -0.3].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Box.new()
                        .setSize([5, 5, 0.5].to_java Java::float)
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("wood")
                    )
                )
            )
            .addChild(Transform.new()
                .setRotation([1, 0, 0, -1.57].to_java Java::float)
                .setTranslation([0, 0.6, 2.5].to_java Java::float)
                .addChild(Transform.new()
                    .setRotation([0, 0, 1, 1.57].to_java Java::float)
                    .addChild(Shape.new()
                        .setGeometry(Extrusion.new()
                            .setBeginCap(false)
                            .setCrossSection([1, -0.38, 0.92, -0.38, 0.71, -0.71, 0.38, -0.92, 0, -1, -0.38, -0.92, -0.71, -0.71, -0.92, -0.38, -1, -0.38, -1, -1.1, 1, -1.1, 1, -0.38].to_java Java::float)
                            .setEndCap(false)
                            .setSolid(false)
                            .setSpine([0, 6, 0, 0, -11, 0].to_java Java::float)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("wood")
                        )
                    )
                )
            )
            .addChild(Transform.new()
                .setDEF("flinger")
                .setCenter([7, 0, 0].to_java Java::float)
                .setRotation([0, 0, 1, 0.82].to_java Java::float)
                .setScale([0.9, 1, 1].to_java Java::float)
                .setTranslation([-7, 18, 2.5].to_java Java::float)
                .addChild(Transform.new()
                    .addChild(Shape.new()
                        .setGeometry(Box.new()
                            .setSize([35, 1, 1].to_java Java::float)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("wood")
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([7, 0, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Box.new()
                                .setSize([8, 2, 2].to_java Java::float)
                            )
                            .setAppearance(Appearance.new()
                                .setUSE("wood")
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setScale([0.2, 0.2, 0.2].to_java Java::float)
                    .setTranslation([-15, -1, 0].to_java Java::float)
                    .addChild(Shape.new()
                        .setDEF("Torus")
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setSpecularColor([1, 1, 1].to_java Java::float)
                            )
                        )
                        .setGeometry(Extrusion.new()
                            .setBeginCap(false)
                            .setConvex(false)
                            .setCreaseAngle(1.57)
                            .setCrossSection([0.9, 0, 0.81, -0.34, 0.63, -0.63, 0.34, -0.83, 0, -0.9, -0.34, -0.81, -0.63, -0.63, -0.81, -0.34, -0.9, 0, -0.81, 0.34, -0.63, 0.63, -0.34, 0.81, 0, 0.9, 0.38, 0.81, 0.63, 0.63, 0.81, 0.34, 0.9, 0].to_java Java::float)
                            .setEndCap(false)
                            .setSpine([2, 0, 0, 1.85, 0, 0.77, 1.41, 0, 1.41, 0.77, 0, 1.85, 0, 0, 2, -0.77, 0, 1.85, -1.41, 0, 1.41, -1.85, 0, 0.77, -2, 0, 0, -1.85, 0, -0.77, -1.41, 0, -1.41, -0.77, 0, -1.85, 0, 0, -2, 0.77, 0, -1.85, 1.41, 0, -1.41, 1.85, 0, -0.77, 2, 0, 0].to_java Java::float)
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([1, 0, 2].to_java Java::float)
                        .addChild(Shape.new()
                            .setAppearance(Appearance.new()
                                .setDEF("rope")
                                .setTexture(ImageTexture.new()
                                    .setUSE("woodTexture")
                                )
                            )
                            .setGeometry(Sphere.new()
                                .setRadius(1.5)
                            )
                        )
                .addComments(CommentsBlock.new("knott"))
                    )
                )
            .addComments(CommentsBlock.new("The Unicorn"))
                .addChild(Transform.new()
                    .setRotation([0, 0, 1, 1.2].to_java Java::float)
                    .setScale([0.2, 0.2, 0.2].to_java Java::float)
                    .setTranslation([-18.3, 0.3, 0].to_java Java::float)
                    .addChild(Shape.new()
                        .setGeometry(Cylinder.new()
                            .setHeight(10.0)
                        )
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setSpecularColor([1, 1, 1].to_java Java::float)
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, -2.5, 0].to_java Java::float)
                .addComments(CommentsBlock.new("The Unicorn"))
                        .addChild(Shape.new()
                            .setUSE("Torus")
                        )
                        .addChild(Transform.new()
                            .setTranslation([-2, 0, 0].to_java Java::float)
                            .addChild(Shape.new()
                                .setGeometry(Sphere.new()
                                    .setRadius(1.5)
                                )
                                .setAppearance(Appearance.new()
                                    .setUSE("rope")
                                )
                            )
                  .addComments(CommentsBlock.new("Knott"))
                        )
                    )
                    .addChild(Transform.new()
                        .setRotation([0, 0, 1, 1.2].to_java Java::float)
                        .setTranslation([15, 55, -11].to_java Java::float)
                        .addChild(Transform.new()
                            .setScale([5, 5, 5].to_java Java::float)
                            .addChild(Shape.new()
                                .setAppearance(Appearance.new()
                                    .setUSE("rope")
                                )
                                .setGeometry(Extrusion.new()
                                    .setBeginCap(false)
                                    .setCreaseAngle(0.76)
                                    .setCrossSection([0.1, 0, 0.092, -0.038, 0.071, -0.071, 0.038, -0.092, 0, -0.1, -0.038, -0.092, -0.071, -0.071, -0.092, -0.038, -0.1, 0, -0.092, 0.038, -0.071, 0.071, -0.038, 0.092, 0, 0.1, 0.038, 0.092, 0.071, 0.071, 0.092, 0.038, 0.1, 0].to_java Java::float)
                                    .setEndCap(false)
                                    .setSolid(false)
                                    .setSpine([-15.2, 1.4, 2.2, -12, -0.8, 2.2].to_java Java::float)
                                )
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, -1.7].to_java Java::float)
                    .setTranslation([-17, -4.5, 0].to_java Java::float)
                    .addChild(Transform.new()
                        .setScale([0.2, 0.2, 0.2].to_java Java::float)
                .addComments(CommentsBlock.new("Knot"))
                        .addChild(Shape.new()
                            .setUSE("Torus")
                        )
                        .addChild(Transform.new()
                            .setTranslation([-1, 0, 1.7].to_java Java::float)
                            .addChild(Shape.new()
                                .setGeometry(Sphere.new()
                                    .setRadius(1.5)
                                )
                                .setAppearance(Appearance.new()
                                    .setUSE("rope")
                                )
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setDEF("RnS")
                    .addChild(Transform.new()
                        .setDEF("ropes")
                        .addChild(Transform.new()
                            .setRotation([0, 0, 1, -0.82].to_java Java::float)
                            .setTranslation([7, -26, -2.5].to_java Java::float)
                            .addChild(Shape.new()
                                .setAppearance(Appearance.new()
                                    .setUSE("rope")
                                )
                                .setGeometry(Extrusion.new()
                                    .setBeginCap(false)
                                    .setCreaseAngle(0.76)
                                    .setCrossSection([0.1, 0, 0.092, -0.038, 0.071, -0.071, 0.038, -0.092, 0, -0.1, -0.038, -0.092, -0.071, -0.071, -0.092, -0.038, -0.1, 0, -0.092, 0.038, -0.071, 0.071, -0.038, 0.092, 0, 0.1, 0.038, 0.092, 0.071, 0.071, 0.092, 0.038, 0.1, 0].to_java Java::float)
                                    .setEndCap(false)
                                    .setSolid(false)
                                    .setSpine([-33, 0.9, 2.5, -18.5, 1.9, 2.55].to_java Java::float)
                                )
                            )
                            .addChild(Shape.new()
                                .setAppearance(Appearance.new()
                                    .setUSE("rope")
                                )
                                .setGeometry(Extrusion.new()
                                    .setBeginCap(false)
                                    .setCreaseAngle(0.76)
                                    .setCrossSection([0.1, 0, 0.092, -0.038, 0.071, -0.071, 0.038, -0.092, 0, -0.1, -0.038, -0.092, -0.071, -0.071, -0.092, -0.038, -0.1, 0, -0.092, 0.038, -0.071, 0.071, -0.038, 0.092, 0, 0.1, 0.038, 0.092, 0.071, 0.071, 0.092, 0.038, 0.1, 0].to_java Java::float)
                                    .setEndCap(false)
                                    .setSolid(false)
                                    .setSpine([-35.7, -0.8, 2.5, -18.8, -0.8, 2.55].to_java Java::float)
                                )
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setDEF("sling")
                        .setRotation([0, 0, 1, -0.82].to_java Java::float)
                        .setTranslation([-4, -15.3, 0].to_java Java::float)
                        .addChild(Transform.new()
                            .addChild(Transform.new()
                                .setRotation([0, 1, 0, -1.57].to_java Java::float)
                                .setScale([1, 1.3, 1].to_java Java::float)
                                .setTranslation([0.5, 0, -1].to_java Java::float)
                                .addChild(Transform.new()
                                    .setRotation([0, 0, 1, 1.57].to_java Java::float)
                                    .addChild(Transform.new()
                                        .setScale([0.3, 0.3, 0.3].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setDEF("halfsling")
                                            .setAppearance(Appearance.new()
                                                .setDEF("clear")
                                                .setMaterial(Material.new()
                                                    .setTransparency(0.5)
                                                )
                                            )
                                            .setGeometry(Extrusion.new()
                                                .setCrossSection([0, 0, 0, 5, 0.5, 7, 1, 8, 2, 9, 3, 11, 3.5, 11.2, 4, 11, 5, 9, 6, 8, 6.5, 7, 6.7, 5, 6.7, 0, 0, 0].to_java Java::float)
                                                .setSpine([0, 0, 0, 0.1, 0, 0].to_java Java::float)
                                            )
                                        )
                                        .addChild(Transform.new()
                                            .setScale([0.3, 0.3, 0.3].to_java Java::float)
                                            .setTranslation([0, -3.5, 11.5].to_java Java::float)
                                            .addChild(Shape.new()
                                                .setUSE("Torus")
                                            )
                                            .addChild(Transform.new()
                                                .setTranslation([0, 0, 2].to_java Java::float)
                                                .addChild(Shape.new()
                                                    .setAppearance(Appearance.new()
                                                        .setUSE("rope")
                                                    )
                                                    .setGeometry(Sphere.new()
                                                        .setRadius(1.5)
                                                    )
                                                )
                                            )
                                        )
                                    )
                                    .addChild(Transform.new()
                                        .setScale([0.3, 0.3, 0.3].to_java Java::float)
                                        .setTranslation([2, 0, 0].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("halfsling")
                                        )
                                        .addChild(Transform.new()
                                            .setScale([0.3, 0.3, 0.3].to_java Java::float)
                                            .setTranslation([0, -3.5, 11.3].to_java Java::float)
                                            .addChild(Shape.new()
                                                .setUSE("Torus")
                                            )
                                            .addChild(Transform.new()
                                                .setTranslation([0, 0, 2].to_java Java::float)
                                                .addChild(Shape.new()
                                                    .setAppearance(Appearance.new()
                                                        .setUSE("rope")
                                                    )
                                                    .setGeometry(Sphere.new()
                                                        .setRadius(1.5)
                                                    )
                                                )
                                            )
                                        )
                                    )
                                    .addChild(Transform.new()
                                        .setTranslation([1, -1, 0].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setGeometry(Extrusion.new()
                                                .setBeginCap(false)
                                                .setCreaseAngle(0.785)
                                                .setCrossSection([1, 0, 0.92, -0.38, 0.71, -0.71, 0.38, -0.92, 0, -1, -0.38, -0.92, -0.71, -0.71, -0.92, -0.38, -1, 0].to_java Java::float)
                                                .setEndCap(false)
                                                .setSolid(false)
                                                .setSpine([0, -1, 0, 0, 1, 0].to_java Java::float)
                                            )
                                            .setAppearance(Appearance.new()
                                                .setUSE("clear")
                                            )
                                        )
                                    )
                                )
                                .addChild(TouchSensor.new()
                                    .setDEF("LauncheeChoice")
                                    .setDescription("launcher choice")
                                )
                            )
                            .addChild(Transform.new()
                                .setDEF("projectiletransform")
                                .setScale([0.01, 0.01, 0.01].to_java Java::float)
                                .addChild(Switch.new()
                                    .setDEF("projectile")
                                    .setWhichChoice(0)
                                    .addChild(Group.new()
                                        .addChild(Transform.new()
                                            .setTranslation([0, 0.7, 0].to_java Java::float)
                                            .addChild(Shape.new()
                                                .setGeometry(Sphere.new()
                                                    .setRadius(0.7)
                                                )
                                                .setAppearance(Appearance.new()
                                                    .setDEF("black")
                                                    .setMaterial(Material.new()
                                                        .setDiffuseColor([0, 0, 0].to_java Java::float)
                                                        .setSpecularColor([1, 1, 1].to_java Java::float)
                                                    )
                                                )
                                            )
                                        )
                                    )
                                    .addChild(Group.new()
                                        .addChild(Transform.new()
                                            .addChild(Inline.new()
                                                .setUrl(["cow.wrl", "http://www.uoguelph.ca/~dchiu/cow.wrl"].to_java Java::java.lang.String)
                                            )
                                        )
                                    )
                                    .addChild(Group.new()
                                        .addChild(Transform.new()
                                            .setRotation([0, 1, 0, 1.57].to_java Java::float)
                                            .setScale([0.4, 0.4, 0.4].to_java Java::float)
                                            .setTranslation([0, 0.7, 0].to_java Java::float)
                                            .addChild(Inline.new()
                                                .setUrl(["vrml_ginger.wrl", "http://home.inreach.com/ntamura/vrml/vrml_ginger.wrl"].to_java Java::java.lang.String)
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
            .addChild(Transform.new()
                .setRotation([1, 0, 0, 1.57].to_java Java::float)
                .setTranslation([0, 18, 2.5].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Cylinder.new()
                        .setHeight(8.0)
                        .setRadius(0.4)
                    )
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([0, 0, 0].to_java Java::float)
                            .setSpecularColor([1, 1, 1].to_java Java::float)
                        )
                    )
                )
            .addComments(CommentsBlock.new("Top Pivot"))
            )
            .addChild(Transform.new()
                .setDEF("verticalweight")
                .addChild(Transform.new()
                    .setTranslation([4, 18, 1.8].to_java Java::float)
                    .addChild(Shape.new()
                        .setGeometry(Box.new()
                            .setSize([1, 10, 0.5].to_java Java::float)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("wood")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([4, 18, 3.2].to_java Java::float)
                    .addChild(Shape.new()
                        .setGeometry(Box.new()
                            .setSize([1, 10, 0.5].to_java Java::float)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("wood")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([4, 14, 2.5].to_java Java::float)
              .addComments(CommentsBlock.new("CounterWeight"))
                    .addChild(Shape.new()
                        .setGeometry(Cylinder.new()
                            .setHeight(4.0)
                            .setRadius(1.5)
                        )
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setDiffuseColor([0, 0, 0].to_java Java::float)
                                .setSpecularColor([1, 1, 1].to_java Java::float)
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setTranslation([4, 22, 2.5].to_java Java::float)
                    .addChild(Shape.new()
                        .setGeometry(Cylinder.new()
                            .setHeight(2.5)
                            .setRadius(0.3)
                        )
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setDiffuseColor([0, 0, 0].to_java Java::float)
                                .setSpecularColor([1, 1, 1].to_java Java::float)
                            )
                        )
                    )
                )
            )
            .addChild(Transform.new()
                .setRotation([0, 0, 1, 1.57].to_java Java::float)
                .setScale([0.2, 0.2, 0.2].to_java Java::float)
                .setTranslation([-11.5, -1, 2].to_java Java::float)
                .addChild(Transform.new()
                    .setDEF("screw")
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .addChild(Shape.new()
                        .setUSE("Torus")
                    )
                    .addChild(Transform.new()
                        .setRotation([1, 0, 0, -1.57].to_java Java::float)
                        .setTranslation([0, 0, 7].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cylinder.new()
                                .setHeight(10.0)
                                .setRadius(0.7)
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setSpecularColor([1, 1, 1].to_java Java::float)
                                )
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([0, 0, 7].to_java Java::float)
                    .addChild(Transform.new()
                        .setUSE("screw")
                    )
                )
            .addComments(CommentsBlock.new("Release Pin"))
                .addChild(Transform.new()
                    .setDEF("Pin")
                    .setRotation([1, 0, 0, -1.57].to_java Java::float)
                    .setTranslation([0, 0, -3].to_java Java::float)
                    .addChild(Transform.new()
                        .setUSE("screw")
                    )
                )
            )
            .addChild(Transform.new()
                .setTranslation([0, 0, 5].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("plank")
                )
                .addChild(Transform.new()
                    .setUSE("angledsupport")
                )
                .addChild(Transform.new()
                    .setUSE("angledsupport2")
                )
                .addChild(Transform.new()
                    .setUSE("verticalsupport")
                )
                .addChild(Transform.new()
                    .setUSE("horizontalsupport")
                )
                .addChild(Transform.new()
                    .setRotation([0, 1, 0, 1.57].to_java Java::float)
                    .setScale([0.6, 1, 1].to_java Java::float)
                    .setTranslation([0, -11, -2.5].to_java Java::float)
                    .addChild(Transform.new()
                        .setUSE("horizontalsupport")
                    )
                )
                .addChild(Transform.new()
                    .setRotation([0, 0, 1, -1.57].to_java Java::float)
                    .setScale([0.6, 1, 1].to_java Java::float)
                    .setTranslation([0, 5, -10].to_java Java::float)
                    .addChild(Transform.new()
                        .setRotation([0, 1, 0, 0.4].to_java Java::float)
                        .addChild(Shape.new()
                            .setUSE("plank")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([0, 0, 0.6].to_java Java::float)
                    .addChild(Transform.new()
                        .setUSE("panel")
                    )
                )
            )
            .addChild(Transform.new()
                .setTranslation([10, -1, 2.5].to_java Java::float)
                .addChild(Shape.new()
                    .setDEF("Axle")
                    .setGeometry(Box.new()
                        .setSize([1, 1, 8].to_java Java::float)
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("wood")
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setTranslation([0, 0, 4.5].to_java Java::float)
                    .addChild(Shape.new()
                        .setDEF("wheel")
                        .setGeometry(Cylinder.new()
                            .setRadius(2.0)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("wood")
                        )
                    )
                    .addChild(Shape.new()
                        .setDEF("tracks")
                        .setGeometry(Sphere.new()
                            .setRadius(1.5)
                        )
                        .setAppearance(Appearance.new()
                            .setUSE("black")
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, 0.55, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setDEF("hub")
                            .setGeometry(Sphere.new()
                                .setRadius(1.5)
                            )
                            .setAppearance(Appearance.new()
                                .setUSE("black")
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setTranslation([0, 0, -4.5].to_java Java::float)
                    .addChild(Shape.new()
                        .setUSE("wheel")
                    )
                    .addChild(Shape.new()
                        .setUSE("tracks")
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, -0.55, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setUSE("hub")
                        )
                    )
                )
            )
            .addChild(Transform.new()
                .setTranslation([-10, -1, 2.5].to_java Java::float)
                .addChild(Shape.new()
                    .setUSE("Axle")
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setTranslation([0, 0, 4.5].to_java Java::float)
                    .addChild(Shape.new()
                        .setUSE("wheel")
                    )
                    .addChild(Shape.new()
                        .setUSE("tracks")
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, 0.55, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setUSE("hub")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([1, 0, 0, 1.57].to_java Java::float)
                    .setTranslation([0, 0, -4.5].to_java Java::float)
                    .addChild(Shape.new()
                        .setUSE("wheel")
                    )
                    .addChild(Shape.new()
                        .setUSE("tracks")
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, -0.55, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setUSE("hub")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setRotation([0, 1, 0, -0.6].to_java Java::float)
                    .setTranslation([0, 100, 400].to_java Java::float)
                    .addChild(Transform.new()
                        .setTranslation([1, 3, 0].to_java Java::float)
                        .addChild(Viewpoint.new()
                            .setDescription("Side")
                        )
                    )
                    .addChild(Transform.new()
                        .setUSE("launch")
                    )
                    .addChild(Transform.new()
                        .addChild(TouchSensor.new()
                            .setUSE("LauncheeChoice")
                        )
                        .addChild(Switch.new()
                            .setUSE("projectilename")
                        )
                        .addChild(Transform.new()
                            .setTranslation([2.5, 0, 0].to_java Java::float)
                            .addChild(Shape.new()
                                .setGeometry(Box.new()
                                    .setSize([5, 0.5, 0.5].to_java Java::float)
                                )
                                .setAppearance(Appearance.new()
                                    .setMaterial(Material.new()
                                        .setTransparency(1.0)
                                    )
                                )
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setScale([0.5, 0.5, 0.5].to_java Java::float)
                        .setTranslation([0, -1, 0].to_java Java::float)
                        .addChild(TouchSensor.new()
                            .setUSE("weightselector")
                        )
                        .addChild(Switch.new()
                            .setUSE("Weight")
                        )
                        .addChild(Transform.new()
                            .setTranslation([8, 0, 0].to_java Java::float)
                            .addChild(Shape.new()
                                .setGeometry(Box.new()
                                    .setSize([17, 1, 0.5].to_java Java::float)
                                )
                                .setAppearance(Appearance.new()
                                    .setMaterial(Material.new()
                                        .setTransparency(1.0)
                                    )
                                )
                            )
                        )
                    )
                )
                .addChild(Transform.new()
                    .setDEF("ProjectileTransform")
                    .setTranslation([14.25, 1.25, 0].to_java Java::float)
                    .addChild(Switch.new()
                        .setUSE("projectile")
                    )
                    .addChild(Transform.new()
                        .setRotation([0, 1, 0, 1.57].to_java Java::float)
                        .setTranslation([0, 1, 0].to_java Java::float)
                        .addChild(Viewpoint.new()
                            .setDescription("Projectile Cam")
                            .setPosition([0, 0, 15].to_java Java::float)
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([20, 2, 0].to_java Java::float)
                    .addChild(Transform.new()
                        .setDEF("Front")
                        .setRotation([0, 1, 0, 1.57].to_java Java::float)
                        .addChild(Viewpoint.new()
                            .setDescription("Fore")
                        )
                    )
                )
                .addChild(Transform.new()
                    .setTranslation([-8, 4, 0].to_java Java::float)
                    .addChild(Transform.new()
                        .setRotation([0, 1, 0, -1.57].to_java Java::float)
                        .addChild(Viewpoint.new()
                            .setDescription("Aft")
                        )
                    )
                )
                .addChild(Script.new()
                    .setDEF("WeightScript")
                    .addField(Field.new()
                        .setName("set_boolean")
                        .setAccessType("inputOnly")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("whichchoice")
                        .setAccessType("outputOnly")
                        .setType("SFInt32")
                    )
                    .addField(Field.new()
                        .setName("CounterWeight")
                        .setAccessType("outputOnly")
                        .setType("SFFloat")
                    )
          .setSourceCode("ecmascript:\n"+
"\n"+
"\n"+
"function initialize ()\n"+
"{\n"+
"	whichchoice =0;\n"+
"	CounterWeight=100;\n"+
"}\n"+
"\n"+
"function set_boolean ( boolean_input, eventTime)\n"+
"{\n"+
"\n"+
"	if ( boolean_input== false ) { return; } // ignore the unclick\n"+
"        whichchoice = whichchoice +1;\n"+
"	if (whichchoice == 0)CounterWeight=50.00;\n"+
"	if (whichchoice == 1)CounterWeight=500.00;\n"+
"	if (whichchoice == 2)CounterWeight=1000.00;\n"+
"	if (whichchoice == 3)CounterWeight=10000.00;\n"+
"        if ( whichchoice ==4 ) { whichchoice = 0; CounterWeight=50; }\n"+
"\n"+
"\n"+
"        Browser.println ('CounterWeight ='+CounterWeight);\n"+
"}")                )
                .addChild(Script.new()
                    .setDEF("LauncheeScript")
                    .addField(Field.new()
                        .setName("set_boolean")
                        .setAccessType("inputOnly")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("whichchoice")
                        .setAccessType("outputOnly")
                        .setType("SFInt32")
                    )
                    .addField(Field.new()
                        .setName("ProjectileWeight")
                        .setAccessType("outputOnly")
                        .setType("SFFloat")
                    )
          .setSourceCode("ecmascript:\n"+
"\n"+
"function set_boolean (boolean_input, eventTime)\n"+
"{\n"+
"	if ( boolean_input== false ) { return; } // ignore unclick\n"+
"        whichchoice = whichchoice +1;\n"+
"        if (whichchoice == 0)ProjectileWeight=10.00;\n"+
"        if (whichchoice == 1)ProjectileWeight=1000.00;\n"+
"	if (whichchoice == 2)ProjectileWeight=5;\n"+
"\n"+
"	if ( whichchoice ==3 ) { whichchoice = 0; ProjectileWeight=10.00; }\n"+
"	Browser.println ('Projectile Weight'+ProjectileWeight);\n"+
"}")                )
                .addChild(Script.new()
                    .setDEF("PigdogMonkScript")
                    .addField(Field.new()
                        .setName("set_boolean")
                        .setAccessType("inputOnly")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("whichchoice")
                        .setAccessType("outputOnly")
                        .setType("SFInt32")
                    )
          .setSourceCode("ecmascript:\n"+
"\n"+
"function set_boolean (boolean_input, eventTime)\n"+
"{\n"+
"	if ( boolean_input== false ) { return; } // ignore unclick\n"+
"\n"+
"        whichchoice = whichchoice +1;\n"+
"\n"+
"        if ( whichchoice ==2 )  whichchoice = 0;\n"+
"\n"+
"\n"+
"}")                )
                .addChild(Script.new()
                    .setDEF("Mover")
                    .addField(Field.new()
                        .setName("set_fraction")
                        .setAccessType("inputOnly")
                        .setType("SFFloat")
                    )
                    .addField(Field.new()
                        .setName("set_MassCounterWeight")
                        .setAccessType("inputOnly")
                        .setType("SFFloat")
                    )
                    .addField(Field.new()
                        .setName("set_MassProjectileWeight")
                        .setAccessType("inputOnly")
                        .setType("SFFloat")
                    )
                    .addField(Field.new()
                        .setName("MassCounterWeight")
                        .setAccessType("initializeOnly")
                        .setType("SFFloat")
                        .setValue("1")
                    )
                    .addField(Field.new()
                        .setName("MassProjectileWeight")
                        .setAccessType("initializeOnly")
                        .setType("SFFloat")
                        .setValue("1")
                    )
                    .addField(Field.new()
                        .setName("transparent")
                        .setAccessType("outputOnly")
                        .setType("SFVec3f")
                    )
                    .addField(Field.new()
                        .setName("value_changed")
                        .setAccessType("outputOnly")
                        .setType("SFVec3f")
                    )
          .setSourceCode("ecmascript:\n"+
"\n"+
"function initialize ()\n"+
"{\n"+
"	MassCounterWeight=100;\n"+
"	MassProjectileWeight=10;\n"+
"	Browser.println ('MassCounterWeight =' + MassCounterWeight);\n"+
"	Browser.println ('MassProjectileWeight =' + MassProjectileWeight);\n"+
"}\n"+
"\n"+
"function set_MassProjectileWeight (value, timestamp)\n"+
"{\n"+
"	MassProjectileWeight = value;\n"+
"	Browser.println ('new MassProjectileWeight =' + MassProjectileWeight);\n"+
"}\n"+
"function set_MassCounterWeight (value2, timestamp)\n"+
"{\n"+
"	MassCounterWeight = value2;\n"+
"	Browser.println ('new MassCounterWeight =' + MassCounterWeight);\n"+
"}\n"+
"\n"+
"\n"+
"function set_fraction ( fraction, eventTime )\n"+
"{\n"+
"	var TrebuchetHeight=45;\n"+
"	var Height =25;\n"+
"      	var x = (2*(MassCounterWeight/MassProjectileWeight)*Height*fraction)-.5*TrebuchetHeight;\n"+
"	// start at TrebuchetHeight and keep along z axis (z=zero)\n"+
"	var y =  (MassCounterWeight/MassProjectileWeight)*Height*Math.sin(fraction*3.14);\n"+
"        var z = 0;\n"+
"        transparent = new SFVec3f (1,1,1);\n"+
"     if (y <1.5*TrebuchetHeight  )if (x<TrebuchetHeight)\n"+
"		{\n"+
"		x=x-10;\n"+
"		y=y+1;\n"+
"		transparent = new SFVec3f(.01, .01, .01);\n"+
"			}\n"+
"\n"+
"	value_changed = new SFVec3f (x, y, z);\n"+
"	Browser.println ('x=' + value_changed[0] + ' y=' + value_changed[1] + ' z=' + value_changed[2]);\n"+
"}")                )
            )
        )
        .addChild(TimeSensor.new()
            .setDEF("clock")
            .setCycleInterval(10.0)
        )
        .addChild(PositionInterpolator.new()
            .setDEF("verticalweightpath")
            .setKey([0, 0.1, 0.2, 0.2, 0.3, 0.9].to_java Java::float)
            .setKeyValue([1.4, 1.6, 0, 1, -8, 0, -3.5, -12, 0, -3.5, -12, 0, 1.2, -8, 0, 1.4, 1.6, 0].to_java Java::float)
        )
        .addChild(OrientationInterpolator.new()
            .setDEF("flingerangles")
            .setKey([0, 0.1, 0.2, 0.2, 0.3, 0.9].to_java Java::float)
            .setKeyValue([0, 0, 1, 0.82, 0, 0, 1, -0.77, 0, 0, 1, -1.57, 0, 0, 1, -1.57, 0, 0, 1, -0.77, 0, 0, 1, 0.82].to_java Java::float)
        )
        .addChild(PositionInterpolator.new()
            .setDEF("pinpath")
            .setKey([0, 0.01, 0.95, 1].to_java Java::float)
            .setKeyValue([0, 0, -3, 0, 0, -10, 0, 0, -10, 0, 0, -3].to_java Java::float)
        )
        .addChild(OrientationInterpolator.new()
            .setDEF("RnSAngels")
            .setKey([0, 0.7, 1].to_java Java::float)
            .setKeyValue([0, 0, 1, 0, 0, 0, 1, -3.14, 0, 0, 1, 0].to_java Java::float)
        )
        .addChild(PositionInterpolator.new()
            .setDEF("invisiable")
            .setKey([0, 0.2, 0.98, 0.99].to_java Java::float)
            .setKeyValue([1, 1, 1, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 1, 1, 1].to_java Java::float)
        )
        .addChild(ROUTE.new()
            .setFromField("fraction_changed")
            .setFromNode("clock")
            .setToField("set_fraction")
            .setToNode("invisiable")
        )
        .addChild(ROUTE.new()
            .setFromField("value_changed")
            .setFromNode("invisiable")
            .setToField("set_scale")
            .setToNode("projectiletransform")
        )
        .addChild(ROUTE.new()
            .setFromField("CounterWeight")
            .setFromNode("WeightScript")
            .setToField("set_MassCounterWeight")
            .setToNode("Mover")
        )
        .addChild(ROUTE.new()
            .setFromField("ProjectileWeight")
            .setFromNode("LauncheeScript")
            .setToField("set_MassProjectileWeight")
            .setToNode("Mover")
        )
        .addChild(ROUTE.new()
            .setFromField("fraction_changed")
            .setFromNode("clock")
            .setToField("set_fraction")
            .setToNode("Mover")
        )
        .addChild(ROUTE.new()
            .setFromField("value_changed")
            .setFromNode("Mover")
            .setToField("set_translation")
            .setToNode("ProjectileTransform")
        )
        .addChild(ROUTE.new()
            .setFromField("transparent")
            .setFromNode("Mover")
            .setToField("set_scale")
            .setToNode("ProjectileTransform")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("Launch")
            .setToField("set_startTime")
            .setToNode("clock")
        )
        .addChild(ROUTE.new()
            .setFromField("isActive")
            .setFromNode("Launch")
            .setToField("set_boolean")
            .setToNode("PigdogMonkScript")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("Launch")
            .setToField("set_startTime")
            .setToNode("PigDogSound")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("Launch")
            .setToField("set_startTime")
            .setToNode("MonkSound")
        )
        .addChild(ROUTE.new()
            .setFromField("whichchoice")
            .setFromNode("PigdogMonkScript")
            .setToField("whichChoice")
            .setToNode("PigdogMonk")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("LauncheeChoice")
            .setToField("set_startTime")
            .setToNode("HolyHandGrenadeSound")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("LauncheeChoice")
            .setToField("set_startTime")
            .setToNode("CowSound")
        )
        .addChild(ROUTE.new()
            .setFromField("touchTime")
            .setFromNode("LauncheeChoice")
            .setToField("set_startTime")
            .setToNode("HamsterSound")
        )
        .addChild(ROUTE.new()
            .setFromField("isActive")
            .setFromNode("LauncheeChoice")
            .setToField("set_boolean")
            .setToNode("LauncheeScript")
        )
        .addChild(ROUTE.new()
            .setFromField("whichchoice")
            .setFromNode("LauncheeScript")
            .setToField("whichChoice")
            .setToNode("projectile")
        )
        .addChild(ROUTE.new()
            .setFromField("whichchoice")
            .setFromNode("LauncheeScript")
            .setToField("whichChoice")
            .setToNode("projectilename")
        )
        .addChild(ROUTE.new()
            .setFromField("isActive")
            .setFromNode("weightselector")
            .setToField("set_boolean")
            .setToNode("WeightScript")
        )
        .addChild(ROUTE.new()
            .setFromField("whichchoice")
            .setFromNode("WeightScript")
            .setToField("whichChoice")
            .setToNode("Weight")
        )
        .addChild(ROUTE.new()
            .setFromField("fraction_changed")
            .setFromNode("clock")
            .setToField("set_fraction")
            .setToNode("flingerangles")
        )
        .addChild(ROUTE.new()
            .setFromField("value_changed")
            .setFromNode("flingerangles")
            .setToField("set_rotation")
            .setToNode("flinger")
        )
        .addChild(ROUTE.new()
            .setFromField("fraction_changed")
            .setFromNode("clock")
            .setToField("set_fraction")
            .setToNode("verticalweightpath")
        )
        .addChild(ROUTE.new()
            .setFromField("value_changed")
            .setFromNode("verticalweightpath")
            .setToField("set_translation")
            .setToNode("verticalweight")
        )
        .addChild(ROUTE.new()
            .setFromField("fraction_changed")
            .setFromNode("clock")
            .setToField("set_fraction")
            .setToNode("pinpath")
        )
        .addChild(ROUTE.new()
            .setFromField("value_changed")
            .setFromNode("pinpath")
            .setToField("set_translation")
            .setToNode("Pin")
        )
    )
x3D0.toFileX3D "../data/Trebuchet.new.jruby.x3d"
x3D0.toFileJSON "../data/Trebuchet.new.jruby.json"
