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("Full")
    .setVersion("4.0")
    .setHead(Head.new()
        .addComponent(Component.new()
            .setName("Scripting")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("EnvironmentalEffects")
            .setLevel(3)
        )
        .addComponent(Component.new()
            .setName("Shaders")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("CubeMapTexturing")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("Texturing")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("Rendering")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("Grouping")
            .setLevel(3)
        )
        .addComponent(Component.new()
            .setName("Core")
            .setLevel(1)
        )
        .addComponent(Component.new()
            .setName("DIS")
            .setLevel(2)
        )
        .addComments(CommentsBlock.new("<component name='Shape' level='4'></component>"))
        .addComments(CommentsBlock.new("Additional authoring resources for meta-tags: http://www.dublincore.org/documents/dcmi-terms http://www.dublincore.org/documents/dces http://www.w3.org/TR/html4/struct/global.html#h-7.4.4 http://vancouver-webpages.com/META http://vancouver-webpages.com/META/about-mk-metas2.html Additional authoring resources for language codes: ftp://ftp.isi.edu/in-notes/bcp/bcp47.txt http://www.loc.gov/standards/iso639-2/langhome.html http://www.iana.org/numbers.html#L"))
        .addMeta(Meta.new()
            .setName("title")
            .setContent("bumpyfreewrljsonverse.x3d")
        )
        .addMeta(Meta.new()
            .setName("description")
            .setContent("*enter description here, short-sentence summaries preferred*")
        )
        .addMeta(Meta.new()
            .setName("creator")
            .setContent("Doug Sanden, Christoph Valentin, John Carlson")
        )
        .addMeta(Meta.new()
            .setName("translator")
            .setContent("*if manually translating VRML-to-X3D, enter name of person translating here*")
        )
        .addMeta(Meta.new()
            .setName("created")
            .setContent("*enter date of initial version here*")
        )
        .addMeta(Meta.new()
            .setName("translated")
            .setContent("*enter date of translation here*")
        )
        .addMeta(Meta.new()
            .setName("modified")
            .setContent("*enter date of latest revision here*")
        )
        .addMeta(Meta.new()
            .setName("version")
            .setContent("*enter version here, if any*")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("*enter reference citation or relative/online url here*")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("*enter additional url/bibliographic reference information here*")
        )
        .addMeta(Meta.new()
            .setName("requires")
            .setContent("*enter reference resource here if required to support function, delivery, or coherence of content*")
        )
        .addMeta(Meta.new()
            .setName("rights")
            .setContent("*enter copyright information here* Example: Copyright (c) Web3D Consortium Inc. 2008, 2024")
        )
        .addMeta(Meta.new()
            .setName("drawing")
            .setContent("*enter drawing filename/url here*")
        )
        .addMeta(Meta.new()
            .setName("MovingImage")
            .setContent("*enter movie filename/url here*")
        )
        .addMeta(Meta.new()
            .setName("photo")
            .setContent("*enter photo filename/url here*")
        )
        .addMeta(Meta.new()
            .setName("subject")
            .setContent("*enter subject keywords here*")
        )
        .addMeta(Meta.new()
            .setName("accessRights")
            .setContent("*enter permission statements or url here*")
        )
        .addMeta(Meta.new()
            .setName("identifier")
            .setContent("*enter online Uniform Resource Identifier (URI) or Uniform Resource Locator (URL) address for this file here*")
        )
        .addMeta(Meta.new()
            .setName("generator")
            .setContent("PSPad, http://www.pspad.com/")
        )
        .addMeta(Meta.new()
            .setName("license")
            .setContent("license.html")
        )
    )
      .addComments(CommentsBlock.new("\"The Flower Review (TPREV)\", a simple MU scene using DIS Sensor Event Distribution, It is assumed the reviewers (users) have a non-X3D voice channel (e.g. TeamSpeak) open for their \"discussion about the teapot\""))
    .setScene(Scene.new()
        .addComments(CommentsBlock.new("basic nodes, which might be present in any scene"))
        .addChild(NavigationInfo.new()
            .setType(["EXAMINE"].to_java Java::java.lang.String)
            .setAvatarSize([0.25, 1.75, 0.75].to_java Java::float)
        )
        .addChild(DirectionalLight.new()
            .setAmbientIntensity(0.2)
            .setDirection([0, -1, 0].to_java Java::float)
        )
        .addChild(DirectionalLight.new()
            .setAmbientIntensity(0.2)
            .setDirection([-1, -0.1, -1].to_java Java::float)
        )
        .addChild(Viewpoint.new()
            .setDescription("My Overview")
            .setFieldOfView(1.570796)
            .setPosition([0, 1.75, 60].to_java Java::float)
        )
        .addComments(CommentsBlock.new("LayerSet with two layers, navigation happens in layer 1"))
        .addLayerSet(LayerSet.new()
            .setActiveLayer(1)
            .setOrder([1, 2].to_java Java::int)
          .addComments(CommentsBlock.new("the first Layer contains the main scenery - \"The Review of the Flower (DIS Multiuser)\""))
          .addComments(CommentsBlock.new("the second layer contains the sliders that are moved with the user's display like a HUD (heads up display)"))
            .addLayers(Layer.new()
                .setPickable(true)
                .setObjectType(["ALL"].to_java Java::java.lang.String)
            .addComments(CommentsBlock.new("this group contains the red/green/blue 3D crosshair"))
                .addChild(Group.new()
              .addComments(CommentsBlock.new("Arrow X"))
                    .addChild(Transform.new()
                        .setTranslation([25, 0, 0].to_java Java::float)
                        .setRotation([0, 0, -1, 1.57].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cylinder.new()
                                .setDEF("Shaft")
                                .setRadius(0.35)
                                .setHeight(50.0)
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDEF("RED")
                                    .setDiffuseColor([1, 0, 0].to_java Java::float)
                                    .setEmissiveColor([1, 0, 0].to_java Java::float)
                                )
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([50, 0, 0].to_java Java::float)
                        .setRotation([0, 0, -1, 1.57].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cone.new()
                                .setDEF("Tip")
                                .setBottomRadius(0.8)
                                .setHeight(3.0)
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setUSE("RED")
                                )
                            )
                        )
                    )
              .addComments(CommentsBlock.new("Arrow Y"))
                    .addChild(Transform.new()
                        .setTranslation([0, 25, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cylinder.new()
                                .setUSE("Shaft")
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDEF("GREEN")
                                    .setDiffuseColor([0, 1, 0].to_java Java::float)
                                    .setEmissiveColor([0, 1, 0].to_java Java::float)
                                )
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, 50, 0].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cone.new()
                                .setUSE("Tip")
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setUSE("GREEN")
                                )
                            )
                        )
                    )
              .addComments(CommentsBlock.new("Arrow Z"))
                    .addChild(Transform.new()
                        .setTranslation([0, 0, 25].to_java Java::float)
                        .setRotation([1, 0, 0, 1.57].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cylinder.new()
                                .setUSE("Shaft")
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDEF("BLUE")
                                    .setDiffuseColor([0, 0, 1].to_java Java::float)
                                    .setEmissiveColor([0, 0, 1].to_java Java::float)
                                )
                            )
                        )
                    )
                    .addChild(Transform.new()
                        .setTranslation([0, 0, 50].to_java Java::float)
                        .setRotation([1, 0, 0, 1.57].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Cone.new()
                                .setUSE("Tip")
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setUSE("BLUE")
                                )
                            )
                        )
                    )
                )
            .addComments(CommentsBlock.new("the model that is being reviewed by the users of this scene"))
                .addChild(Transform.new()
                    .setDEF("FlowerTransform")
              .addComments(CommentsBlock.new("<Inline DEF=\"Flower\" url='\"bumpyfreewrl.x3d\"' />"))
              .addComments(CommentsBlock.new("Images courtesy of Paul Debevec's Light Probe Image Gallery"))
                    .addChild(Background.new()
                        .setBackUrl(["../resources/images/all_probes/stpeters_cross/stpeters_back.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_back.png"].to_java Java::java.lang.String)
                        .setBottomUrl(["../resources/images/all_probes/stpeters_cross/stpeters_bottom.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_bottom.png"].to_java Java::java.lang.String)
                        .setFrontUrl(["../resources/images/all_probes/stpeters_cross/stpeters_front.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_front.png"].to_java Java::java.lang.String)
                        .setLeftUrl(["../resources/images/all_probes/stpeters_cross/stpeters_left.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_left.png"].to_java Java::java.lang.String)
                        .setRightUrl(["../resources/images/all_probes/stpeters_cross/stpeters_right.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_right.png"].to_java Java::java.lang.String)
                        .setTopUrl(["../resources/images/all_probes/stpeters_cross/stpeters_top.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_top.png"].to_java Java::java.lang.String)
                    )
                    .addChild(Transform.new()
                        .addChild(Shape.new()
                  .addComments(CommentsBlock.new("<Sphere radius='40'></Sphere>"))
                            .setGeometry(IndexedFaceSet.new()
                                .setConvex(false)
                                .setDEF("Orbit")
                                .setCoord(Coordinate.new()
                                    .setDEF("OrbitCoordinates")
                                )
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDiffuseColor([0.7, 0.7, 0.7].to_java Java::float)
                                    .setSpecularColor([0.5, 0.5, 0.5].to_java Java::float)
                                )
                                .setTexture(ComposedCubeMapTexture.new()
                                    .setDEF("texture")
                                    .setBackTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_back.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_back.png"].to_java Java::java.lang.String)
                                    )
                                    .setBottomTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_bottom.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_bottom.png"].to_java Java::java.lang.String)
                                    )
                                    .setFrontTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_front.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_front.png"].to_java Java::java.lang.String)
                                    )
                                    .setLeftTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_left.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_left.png"].to_java Java::java.lang.String)
                                    )
                                    .setRightTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_right.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_right.png"].to_java Java::java.lang.String)
                                    )
                                    .setTopTexture(ImageTexture.new()
                                        .setUrl(["../resources/images/all_probes/stpeters_cross/stpeters_top.png", "https://coderextreme.net/X3DJSONLD/src/main/resources/images/all_probes/stpeters_cross/stpeters_top.png"].to_java Java::java.lang.String)
                                    )
                                )
                                .addShaders(ComposedShader.new()
                                    .setDEF("freewrlShader")
                                    .setLanguage("GLSL")
                                    .addField(Field.new()
                                        .setName("chromaticDispertion")
                                        .setAccessType("inputOnly")
                                        .setType("SFVec3f")
                                        .setValue("0.98 1 1.033")
                                    )
                                    .addField(Field.new()
                                        .setName("fw_textureCoordGenType")
                                        .setAccessType("inputOnly")
                                        .setType("SFInt32")
                                        .setValue("0")
                                    )
                                    .addField(Field.new()
                                        .setName("bias")
                                        .setType("SFFloat")
                                        .setAccessType("inputOnly")
                                        .setValue("0.5")
                                    )
                                    .addField(Field.new()
                                        .setName("scale")
                                        .setType("SFFloat")
                                        .setAccessType("inputOnly")
                                        .setValue("0.5")
                                    )
                                    .addField(Field.new()
                                        .setName("power")
                                        .setType("SFFloat")
                                        .setAccessType("inputOnly")
                                        .setValue("2")
                                    )
                                    .addField(Field.new()
                                        .setName("a")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("15")
                                    )
                                    .addField(Field.new()
                                        .setName("b")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("5")
                                    )
                                    .addField(Field.new()
                                        .setName("c")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("5")
                                    )
                                    .addField(Field.new()
                                        .setName("d")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("5")
                                    )
                                    .addField(Field.new()
                                        .setName("tdelta")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("0")
                                    )
                                    .addField(Field.new()
                                        .setName("pdelta")
                                        .setType("SFFloat")
                                        .setAccessType("inputOutput")
                                        .setValue("0")
                                    )
                                    .addParts(ShaderPart.new()
                                        .setUrl(["../shaders/freewrl_flowers_chromatic.vs", "https://coderextreme.net/X3DJSONLD/src/main/shaders/freewrl_flowers_chromatic.vs"].to_java Java::java.lang.String)
                                        .setType("VERTEX")
                                    )
                                    .addParts(ShaderPart.new()
                                        .setUrl(["../shaders/freewrl.fs", "https://coderextreme.net/X3DJSONLD/src/main/shaders/freewrl_bubbles.fs"].to_java Java::java.lang.String)
                                        .setType("FRAGMENT")
                                    )
                      .addComments(CommentsBlock.new("TO CONVERT TO A SPHERE <ShaderPart url='\"../shaders/freewrl.vs\"'></ShaderPart> <ShaderPart url='\"../shaders/freewrl_bubbles.fs\"' type='FRAGMENT'></ShaderPart>"))
                                )
                            )
                        )
                    )
                )
                .addChild(Script.new()
                    .setDEF("OrbitScript")
                    .addField(Field.new()
                        .setName("coordinates")
                        .setAccessType("inputOutput")
                        .setType("MFVec3f")
                    )
                    .addField(Field.new()
                        .setName("coordIndexes")
                        .setAccessType("outputOnly")
                        .setType("MFInt32")
                    )
                    .addField(Field.new()
                        .setName("a")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("10")
                    )
                    .addField(Field.new()
                        .setName("b")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("10")
                    )
                    .addField(Field.new()
                        .setName("c")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("2")
                    )
                    .addField(Field.new()
                        .setName("d")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("2")
                    )
                    .addField(Field.new()
                        .setName("pdelta")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("0")
                    )
                    .addField(Field.new()
                        .setName("tdelta")
                        .setType("SFFloat")
                        .setAccessType("inputOutput")
                        .setValue("0")
                    )
          .setSourceCode("ecmascript:\n"+
"function initialize() {\n"+
"     var resolution = 100;\n"+
"     var theta = 0.0;\n"+
"     var phi = 0.0;\n"+
"     var delta = (2 * 3.141592653) / (resolution-1);\n"+
"     var crds = new MFVec3f();\n"+
"     var vecCount = 0;\n"+
"     for ( i = 0; i < resolution; i++) {\n"+
"     	for ( j = 0; j < resolution; j++) {\n"+
"		var rho = a + b * Math.cos(c * theta + tdelta) * Math.cos(d * phi + pdelta);\n"+
"		crds[vecCount] = new SFVec3f(\n"+
"			rho * Math.cos(phi) * Math.cos(theta),\n"+
"			rho * Math.cos(phi) * Math.sin(theta),\n"+
"			rho * Math.sin(phi)\n"+
"		);\n"+
"		vecCount++;\n"+
"		theta += delta;\n"+
"	}\n"+
"	phi += delta;\n"+
"     }\n"+
"     coordinates = crds;\n"+
"     // coordinates = new MFVec3f(...crds);\n"+
"\n"+
"\n"+
"     var cis = new MFInt32();\n"+
"     var intCount = 0;\n"+
"     for ( i = 0; i < resolution-1; i++) {\n"+
"     	for ( j = 0; j < resolution-1; j++) {\n"+
"	     cis[intCount++] = i*resolution+j;\n"+
"	     cis[intCount++] = i*resolution+j+1;\n"+
"	     cis[intCount++] = (i+1)*resolution+j+1;\n"+
"	     cis[intCount++] = (i+1)*resolution+j;\n"+
"	     cis[intCount++] = -1;\n"+
"	}\n"+
"    }\n"+
"    coordIndexes = cis;\n"+
"    // coordIndexes = new MFInt32(...cis);\n"+
"}")                )
                .addChild(ROUTE.new()
                    .setFromField("coordIndexes")
                    .setFromNode("OrbitScript")
                    .setToField("set_coordIndex")
                    .setToNode("Orbit")
                )
                .addChild(ROUTE.new()
                    .setFromField("coordinates")
                    .setFromNode("OrbitScript")
                    .setToField("set_point")
                    .setToNode("OrbitCoordinates")
                )
            .addComments(CommentsBlock.new("DIS multiuser facilities"))
                .addChild(DISEntityManager.new()
                    .setDEF("EntityManager")
                    .setNetworkMode("networkReader")
                    .addChild(DISEntityTypeMapping.new()
                        .setReadInterval("3")
                        .setCategory(77)
                        .setSpecific(1)
                        .setUrl(["../data/Gramps8Final.x3d", "https://coderextreme.net/X3DJSONLD/src/main/data/Gramps8Final.x3d"].to_java Java::java.lang.String)
                    )
                    .addChild(DISEntityTypeMapping.new()
                        .setReadInterval("3")
                        .setCategory(77)
                        .setSpecific(2)
                        .setUrl(["../data/Leif8Final.x3d", "https://coderextreme.net/X3DJSONLD/src/main/data/Leif8Final.x3d"].to_java Java::java.lang.String)
                    )
                    .addChild(DISEntityTypeMapping.new()
                        .setReadInterval("3")
                        .setCategory(77)
                        .setSpecific(3)
                        .setUrl(["../data/Lily8Final.x3d", "https://coderextreme.net/X3DJSONLD/src/main/data/Lily8Final.x3d"].to_java Java::java.lang.String)
                    )
                    .addChild(DISEntityTypeMapping.new()
                        .setReadInterval("3")
                        .setCategory(77)
                        .setSpecific(4)
                        .setUrl(["../data/Tufani8Final.x3d", "https://coderextreme.net/X3DJSONLD/src/main/data/Tufani8Final.x3d"].to_java Java::java.lang.String)
                    )
                )
                .addChild(Collision.new()
                    .setEnabled(false)
                    .setProxy(Group.new()
                        .setDEF("AvatarHolder")
                    )
                )
                .addChild(ROUTE.new()
                    .setFromField("addedEntities")
                    .setFromNode("EntityManager")
                    .setToField("addChildren")
                    .setToNode("AvatarHolder")
                )
                .addChild(ROUTE.new()
                    .setFromField("removedEntities")
                    .setFromNode("EntityManager")
                    .setToField("removeChildren")
                    .setToNode("AvatarHolder")
                )
            )
            .addLayers(LayoutLayer.new()
                .setPickable(true)
                .setObjectType(["ALL"].to_java Java::java.lang.String)
            .addComments(CommentsBlock.new("positioning the LayoutLayer"))
            .addComments(CommentsBlock.new("clipping the LayoutLayer"))
            .addComments(CommentsBlock.new("the content (children) of the LayoutLayer"))
            .addComments(CommentsBlock.new("first, the slider for scaling the model"))
                .addChild(Transform.new()
                    .setTranslation([0, 0, -3].to_java Java::float)
                    .addChild(Shape.new()
                        .setAppearance(Appearance.new()
                            .setMaterial(Material.new()
                                .setDiffuseColor([0, 0, 0].to_java Java::float)
                                .setTransparency(0.7)
                            )
                        )
                        .setGeometry(Box.new()
                            .setSize([100, 100, 0.02].to_java Java::float)
                        )
                    )
                )
                .addChild(Transform.new()
                    .setDEF("equationTransform")
                    .addChild(Transform.new()
                        .setTranslation([0, 0, -20].to_java Java::float)
                        .addChild(Shape.new()
                            .setGeometry(Text.new()
                                .setDEF("equation")
                                .setString(["r = a + b * cos(c * theta + tdelta) * cos (d * phi + pdelta)"].to_java Java::java.lang.String)
                                .setFontStyle(FontStyle.new()
                                    .setSize(0.09)
                                )
                            )
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDiffuseColor([1, 1, 0].to_java Java::float)
                                )
                            )
                        )
                    )
                )
                .addChild(ProtoDeclare.new()
                    .setName("SliderProto")
                    .setProtoInterface(ProtoInterface.new()
                        .addField(Field.new()
                            .setName("sliderTranslation")
                            .setAccessType("inputOutput")
                            .setType("SFVec3f")
                            .setValue("0 0.7 0")
                        )
                        .addField(Field.new()
                            .setName("transformTranslation")
                            .setAccessType("inputOutput")
                            .setType("SFVec3f")
                            .setValue("0 0 0.1")
                        )
                        .addField(Field.new()
                            .setName("sensorTranslation")
                            .setAccessType("inputOutput")
                            .setType("SFVec3f")
                            .setValue("0 0 0")
                        )
                        .addField(Field.new()
                            .setName("textString")
                            .setAccessType("inputOutput")
                            .setType("MFString")
                            .setValue("\"a=\"")
                        )
                        .addField(Field.new()
                            .setName("parameterScale")
                            .setAccessType("inputOutput")
                            .setType("SFFloat")
                            .setValue("30")
                        )
                        .addField(Field.new()
                            .setName("parameterName")
                            .setAccessType("inputOutput")
                            .setType("SFString")
                            .setValue("a")
                        )
                        .addField(Field.new()
                            .setName("shaderNode")
                            .setAccessType("inputOutput")
                            .setType("SFNode")
                        )
                    )
                    .setProtoBody(ProtoBody.new()
                        .addChild(Group.new()
                            .addChild(Transform.new()
                                .setDEF("protoSlider")
                                .setTranslation([0, 0.7, 0].to_java Java::float)
                                .setIS(IS.new()
                                    .addConnect(Connect.new()
                                        .setNodeField("translation")
                                        .setProtoField("sliderTranslation")
                                    )
                                )
                                .addChild(Transform.new()
                                    .setDEF("protoTransform")
                                    .setTranslation([0, 0, 0.1].to_java Java::float)
                                    .setIS(IS.new()
                                        .addConnect(Connect.new()
                                            .setNodeField("translation")
                                            .setProtoField("sensorTranslation")
                                        )
                                    )
                                    .addChild(PlaneSensor.new()
                                        .setDEF("protoSensor")
                                        .setMaxPosition([1, 0].to_java Java::float)
                                    )
                                    .addChild(Transform.new()
                                        .setTranslation([0, 0, 0].to_java Java::float)
                                        .addChild(TouchSensor.new()
                                            .setDEF("protoTS")
                                        )
                                    )
                                    .addChild(Transform.new()
                                        .addChild(Shape.new()
                                            .setGeometry(Text.new()
                                                .setDEF("protoText")
                                                .setString(["a="].to_java Java::java.lang.String)
                                                .setIS(IS.new()
                                                    .addConnect(Connect.new()
                                                        .setNodeField("string")
                                                        .setProtoField("textString")
                                                    )
                                                )
                                                .setFontStyle(FontStyle.new()
                                                    .setSize(0.23)
                                                )
                                            )
                                            .setAppearance(Appearance.new()
                                                .setMaterial(Material.new()
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                            .addChild(Script.new()
                                .setDEF("protoValueTransformerScript")
                                .setDirectOutput(true)
                                .setMustEvaluate(true)
                                .addField(Field.new()
                                    .setName("protoScale")
                                    .setAccessType("inputOutput")
                                    .setType("SFFloat")
                                    .setValue("30")
                                )
                                .addField(Field.new()
                                    .setName("protoParameterName")
                                    .setAccessType("inputOutput")
                                    .setType("SFString")
                                    .setValue("a")
                                )
                                .addField(Field.new()
                                    .setName("shader")
                                    .setAccessType("inputOutput")
                                    .setType("SFNode")
                                )
                                .addField(Field.new()
                                    .setName("newTranslation")
                                    .setAccessType("inputOnly")
                                    .setType("SFVec3f")
                                    .setValue("1 1 1")
                                )
                                .addField(Field.new()
                                    .setName("protoValue_changed")
                                    .setAccessType("outputOnly")
                                    .setType("SFFloat")
                                    .setValue("1")
                                )
                                .addField(Field.new()
                                    .setName("protoText_changed")
                                    .setAccessType("outputOnly")
                                    .setType("MFString")
                                    .setValue("\"1.0\"")
                                )
                                .setIS(IS.new()
                                    .addConnect(Connect.new()
                                        .setNodeField("protoScale")
                                        .setProtoField("parameterScale")
                                    )
                                    .addConnect(Connect.new()
                                        .setNodeField("protoParameterName")
                                        .setProtoField("parameterName")
                                    )
                                    .addConnect(Connect.new()
                                        .setNodeField("shader")
                                        .setProtoField("shaderNode")
                                    )
                                )
                .setSourceCode("ecmascript:\n"+
"const newTranslation = function(Value) {\n"+
"	'use strict';\n"+
"	protoValue_changed = Value.x * protoScale;\n"+
"	protoText_changed = new MFString(protoParameterName+'='+protoValue_changed.toFixed(2));\n"+
"\n"+
"        var orientation = Value.x;\n"+
"\n"+
"        var ps = Browser.currentScene.getNamedNode(\"protoSensor\");\n"+
"        var t = Browser.currentScene.getNamedNode(\"protoTransform\");\n"+
"        var txt = Browser.currentScene.getNamedNode(\"protoText\");\n"+
"        if (shader) {\n"+
"            shader.getField(protoParameterName).setValue(orientation * protoScale);\n"+
"        }\n"+
"        if (txt) {\n"+
"            var stringField = txt.getField(\"string\");\n"+
"            var label = protoParameterName;\n"+
"            stringField.setValue(new MFString(label+\"=\"+(orientation * protoScale).toFixed(2)));\n"+
"        }\n"+
"        if (ps) {\n"+
"            ps.offset = new SFVec3f(orientation, ps.offset[1], ps.offset[2]);\n"+
"        }\n"+
"        if (t) {\n"+
"            t.translation = new SFVec3f(orientation, t.translation[1], t.translation[2]);\n"+
"        }\n"+
"}")                            )
                            .addChild(ROUTE.new()
                                .setFromField("translation_changed")
                                .setFromNode("protoSensor")
                                .setToField("set_translation")
                                .setToNode("protoTransform")
                            )
                            .addChild(ROUTE.new()
                                .setFromField("translation_changed")
                                .setFromNode("protoSensor")
                                .setToField("newTranslation")
                                .setToNode("protoValueTransformerScript")
                            )
                            .addChild(ROUTE.new()
                                .setFromField("protoText_changed")
                                .setFromNode("protoValueTransformerScript")
                                .setToField("string")
                                .setToNode("protoText")
                            )
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("aPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 0.7 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"a=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("30")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("a")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("bPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 0.4 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"b=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("30")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("b")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("cPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 0.1 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"c=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("20")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("c")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("dPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 -0.2 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"d=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("20")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("d")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("tdeltaPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 -0.5 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"tdelta=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("6.28")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("tdelta")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .addChild(ProtoInstance.new()
                    .setName("SliderProto")
                    .setDEF("pdeltaPI")
                    .addFieldValue(FieldValue.new()
                        .setName("sliderTranslation")
                        .setValue("0 -0.8 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("transformTranslation")
                        .setValue("0 0 0.1")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("sensorTranslation")
                        .setValue("0 0 0")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("textString")
                        .setValue("\"pdelta=\"")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterScale")
                        .setValue("6.28")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("parameterName")
                        .setValue("pdelta")
                    )
                    .addFieldValue(FieldValue.new()
                        .setName("shaderNode")
                        .addChild(ComposedShader.new()
                            .setUSE("freewrlShader")
                        )
                    )
                )
                .setLayout(Layout.new()
                    .setAlign(["LEFT", "BOTTOM"].to_java Java::java.lang.String)
                    .setOffset([-0.2, 0.19].to_java Java::float)
                    .setOffsetUnits(["WORLD", "WORLD"].to_java Java::java.lang.String)
                    .setScaleMode(["NONE", "NONE"].to_java Java::java.lang.String)
                    .setSize([0.4, 0.6].to_java Java::float)
                    .setSizeUnits(["WORLD", "WORLD"].to_java Java::java.lang.String)
                )
                .setViewport(Viewport.new()
                    .setClipBoundary([0, 1, 0, 1].to_java Java::float)
                )
            )
        )
    )
x3D0.toFileX3D "../data/bumpyfreewrljsonverse.new.jruby.x3d"
x3D0.toFileJSON "../data/bumpyfreewrljsonverse.new.jruby.json"
