modules/graphics/src/test/java/test/javafx/scene/Mouse3DTest.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -24,10 +24,11 @@
  */
 
 package test.javafx.scene;
 
 import com.sun.javafx.geom.PickRay;
+import com.sun.javafx.scene.SceneHelper;
 import test.com.sun.javafx.test.MouseEventGenerator;
 import javafx.event.Event;
 import javafx.event.EventHandler;
 import javafx.event.EventType;
 import javafx.geometry.Point2D;

@@ -196,11 +197,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.BACK);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, -200);
         assertPickResult(e.getPickResult(),

@@ -212,11 +213,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.FRONT);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, 200);
         assertPickResult(e.getPickResult(),

@@ -228,11 +229,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.NONE);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, -200);
         assertPickResult(e.getPickResult(),

@@ -243,11 +244,11 @@
     public void shouldPickBoxFromTop() {
         Node b = box().rotate('x', 90).handleMove(me);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, -100, -20);
         assertPickResult(e.getPickResult(),

@@ -258,11 +259,11 @@
     public void shouldPickBoxFromBack() {
         Node b = box().rotate('x', 180).handleMove(me);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, -40, 200);
         assertPickResult(e.getPickResult(),

@@ -273,11 +274,11 @@
     public void shouldPickBoxFromBottom() {
         Node b = box().rotate('x', -90).handleMove(me);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 100, 20);
         assertPickResult(e.getPickResult(),

@@ -288,11 +289,11 @@
     public void shouldPickBoxFromLeft() {
         Node b = box().rotate('y', -90).handleMove(me);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, -50, 20, -10);
         assertPickResult(e.getPickResult(),

@@ -303,11 +304,11 @@
     public void shouldPickBoxFromRight() {
         Node b = box().rotate('y', 90).handleMove(me);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, 20, 10);
         assertPickResult(e.getPickResult(),

@@ -318,11 +319,11 @@
     public void shouldPickBoxByParallelCameraFromFront() {
         MouseEventGenerator g = new MouseEventGenerator();
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.BACK);
         Scene s = scene(group(b), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, 10, 40, -200);
         assertPickResult(e.getPickResult(),

@@ -332,11 +333,11 @@
     @Test
     public void shouldPickBoxByParallelCameraFromBack() {
         MouseEventGenerator g = new MouseEventGenerator();
         Node b = box().rotate('x', 180).handleMove(me);
         Scene s = scene(group(b), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, 10, -40, 200);
         assertPickResult(e.getPickResult(),

@@ -347,14 +348,14 @@
     public void shouldNotPickBoxByParallelCameraFromFrontNextToIt() {
         MouseEventGenerator g = new MouseEventGenerator();
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.BACK);
         Scene s = scene(group(b), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 40));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, -500, 40));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 400));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, -400));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, -500, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 400));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, -400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -362,11 +363,11 @@
     public void shouldPickBoxFromAngle() {
         Node b = box().rotate('y', 90).handleMove(me);
         Scene s = scene(group(group(b).rotate('x', 40)), perspective(), true);
 
         makeParallel(s, 0, 0);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, -41.95498, 0);
         assertPickResult(e.getPickResult(),

@@ -377,17 +378,17 @@
     public void shouldNotPickBoxOutside() {
         Node b = box().handleMove(me);
         b.setTranslateX(300);
         Scene s = scene(group(b), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 1000, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 10, -500);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 10, 500);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -395,17 +396,17 @@
     public void shouldNotPickRotatedBoxOutside() {
         Node b = box().rotate('y', 30).handleMove(me);
         b.setTranslateX(300);
         Scene s = scene(group(b), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 1000, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 300, -500);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 300, 500);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -414,11 +415,11 @@
         Box b = box().handleMove(me);
         b.setPickOnBounds(true);
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, -200);
         assertPickResult(e.getPickResult(),

@@ -430,11 +431,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.BACK);
         Scene s = scene(group(b), perspective(), true);
         b.setTranslateZ(-1000);
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -443,11 +444,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.NONE);
         b.setTranslateZ(-1000);
         Scene s = scene(group(b), perspective(), true);
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, 200);
         assertPickResult(e.getPickResult(),

@@ -459,11 +460,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.NONE);
         Scene s = scene(group(b), parallel(), true);
         b.setTranslateZ(PERSPECTIVE_CAMERA_Z);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 40, 10, 40, 200);
         assertPickResult(e.getPickResult(),

@@ -475,11 +476,11 @@
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.NONE);
         b.setTranslateZ(-3000);
         Scene s = scene(group(b), perspective(), true);
         makeParallel(s, 10, 40);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -488,11 +489,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Box b = box().handleMove(me);
         b.setCullFace(CullFace.NONE);
         Scene s = scene(group(b), parallel(), true);
         b.setTranslateZ(-3000);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 40));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -501,11 +502,11 @@
         Box b = box().handleMove(me);
         b.setTranslateZ(250);
         b.setCullFace(CullFace.NONE);
         Scene s = scene(group(b), perspective(true), true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(-200, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -519,11 +520,11 @@
         cam.setNearClip(800);
         cam.setFarClip(1800);
 
         Scene s = scene(group(b), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -536,11 +537,11 @@
         cam.setNearClip(10);
         cam.setFarClip(40);
 
         Scene s = scene(group(b), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -553,11 +554,11 @@
         cam.setNearClip(250);
         cam.setFarClip(1800);
 
         Scene s = scene(group(b), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(200, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -569,11 +570,11 @@
     public void shouldPickSphereFromFront() {
         Sphere sph = sphere().handleMove(me);
         sph.setCullFace(CullFace.BACK);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -97.46794);
         assertPickResult(e.getPickResult(),

@@ -584,11 +585,11 @@
     public void shouldPickSphereInteriorFromFront() {
         Sphere sph = sphere().handleMove(me);
         sph.setCullFace(CullFace.FRONT);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 97.46794);
         assertPickResult(e.getPickResult(),

@@ -599,11 +600,11 @@
     public void shouldPickNotCulledSphereFromFront() {
         Sphere sph = sphere().handleMove(me);
         sph.setCullFace(CullFace.NONE);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -97.46794);
         assertPickResult(e.getPickResult(),

@@ -614,11 +615,11 @@
     public void shouldPickSphereFromBack() {
         Sphere sph = sphere().rotate('y', 180).handleMove(me);
         sph.setCullFace(CullFace.BACK);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, -10, 20, 97.46794);
         assertPickResult(e.getPickResult(),

@@ -630,11 +631,11 @@
         Node sph = sphere().handleMove(me);
         sph.setTranslateX(100);
         sph.setTranslateY(110);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -642,11 +643,11 @@
     public void shouldPickRoughSphere() {
         Sphere sph = sphereWith4Divs().handleMove(me);
         Scene s = scene(group(sph), perspective(), true);
         sph.impl_updatePeer();
         makeParallel(s, 50, 25);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, 25, -25);
         assertPickResult(e.getPickResult(),

@@ -657,11 +658,11 @@
     public void shouldNotPickRoughSphereOutsideOfItsTriangles() {
         Sphere sph = sphereWith4Divs().handleMove(me);
         Scene s = scene(group(sph), perspective(), true);
         sph.impl_updatePeer();
         makeParallel(s, 50, 60);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -671,11 +672,11 @@
         sph.setTranslateZ(-974);
         sph.setCullFace(CullFace.BACK);
         Scene s = scene(group(sph), perspective(), true);
         sph.impl_updatePeer();
         makeParallel(s, 50, 25);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, 25, -25);
         assertPickResult(e.getPickResult(),

@@ -688,11 +689,11 @@
         sph.setTranslateZ(-980);
         sph.setCullFace(CullFace.BACK);
         Scene s = scene(group(sph), perspective(), true);
         sph.impl_updatePeer();
         makeParallel(s, 50, 25);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -700,11 +701,11 @@
     public void shouldPickSphereOnBounds() {
         Sphere sph = sphere().handleMove(me);
         sph.setPickOnBounds(true);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -100);
         assertPickResult(e.getPickResult(),

@@ -715,11 +716,11 @@
     public void shouldPickRoughSphereOnBounds() {
         Sphere sph = sphereWith4Divs().handleMove(me);
         sph.setPickOnBounds(true);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -100);
         assertPickResult(e.getPickResult(),

@@ -729,16 +730,16 @@
     @Test
     public void shouldPickSphereOnBoundsOutsideOfShape() {
         Sphere sph = sphere().handleMove(me);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 99, 1);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         MouseEvent e = me.event;
         assertNotNull(e);
 
         sph.setPickOnBounds(true);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 99, 1, -100);
         assertPickResult(e.getPickResult(),
                 sph, point(99, 1, -100), 900, NOFACE, null);

@@ -749,11 +750,11 @@
         Sphere sph = sphere().handleMove(me);
         sph.setTranslateZ(-1000);
         sph.setCullFace(CullFace.NONE);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 97.46794);
         assertPickResult(e.getPickResult(),

@@ -765,11 +766,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Sphere sph = sphere().handleMove(me);
         sph.setTranslateZ(PERSPECTIVE_CAMERA_Z + 80);
         sph.setCullFace(CullFace.NONE);
         Scene s = scene(group(sph), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 10, 20, 97.46794);
         assertPickResult(e.getPickResult(),

@@ -781,11 +782,11 @@
         Sphere sph = sphere().handleMove(me);
         sph.setTranslateZ(-1098);
         sph.setCullFace(CullFace.NONE);
         Scene s = scene(group(sph), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -794,11 +795,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Sphere sph = sphere().handleMove(me);
         sph.setTranslateZ(PERSPECTIVE_CAMERA_Z - 98);
         sph.setCullFace(CullFace.NONE);
         Scene s = scene(group(sph), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -807,11 +808,11 @@
         Sphere sp = sphere().handleMove(me);
         sp.setTranslateZ(150);
         sp.setCullFace(CullFace.NONE);
         Scene s = scene(group(sp), perspective(true), true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(-100, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -825,11 +826,11 @@
         cam.setNearClip(800);
         cam.setFarClip(1800);
 
         Scene s = scene(group(sp), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -842,11 +843,11 @@
         cam.setNearClip(10);
         cam.setFarClip(40);
 
         Scene s = scene(group(sp), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -859,11 +860,11 @@
         cam.setNearClip(150);
         cam.setFarClip(1800);
 
         Scene s = scene(group(sp), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(100, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -875,11 +876,11 @@
     public void shouldPickCylinderFromFront() {
         Cylinder c = cylinder().handleMove(me);
         c.setCullFace(CullFace.BACK);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -48.98979);
         assertPickResult(e.getPickResult(),

@@ -890,11 +891,11 @@
     public void shouldPickCylinderInteriorFromFront() {
         Cylinder c = cylinder().handleMove(me);
         c.setCullFace(CullFace.FRONT);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 48.98979);
         assertPickResult(e.getPickResult(),

@@ -905,11 +906,11 @@
     public void shouldPickCylinderFromBack() {
         Cylinder c = cylinder().rotate('y', 180).handleMove(me);
         c.setCullFace(CullFace.BACK);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, -10, 20, 48.98979);
         assertPickResult(e.getPickResult(),

@@ -920,11 +921,11 @@
     public void shouldPickNotCulledCylinderFromFront() {
         Cylinder c = cylinder().handleMove(me);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -48.98979);
         assertPickResult(e.getPickResult(),

@@ -934,11 +935,11 @@
     @Test
     public void shouldPickCylinderFromTop() {
         Node c = cylinder().rotate('x', 90).handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, -100, -20);
         assertPickResult(e.getPickResult(),

@@ -949,11 +950,11 @@
     public void shouldPickCylinderInteriorFromTop() {
         Cylinder c = cylinder().rotate('x', 90).handleMove(me);
         c.setCullFace(CullFace.FRONT);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 100, -20);
         assertPickResult(e.getPickResult(),

@@ -964,11 +965,11 @@
     public void shouldPickNotCulledCylinderFromTop() {
         Cylinder c = cylinder().rotate('x', 90).handleMove(me);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, -100, -20);
         assertPickResult(e.getPickResult(),

@@ -978,11 +979,11 @@
     @Test
     public void shouldPickCylinderFromBottom() {
         Node c = cylinder().rotate('x', -90).handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 100, 20);
         assertPickResult(e.getPickResult(),

@@ -993,13 +994,13 @@
     public void shouldNotPickCylinderAboveIt() {
         Node c = cylinder().handleMove(me);
         c.setTranslateY(130);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 10, 520);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1007,36 +1008,36 @@
     public void shouldNotPickCylinderNextToIt() {
         Node c = cylinder().rotate('y', 45).handleMove(me);
         c.setTranslateX(-48);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 
     @Test
     public void shouldNotPickCylinderParallelToIt() {
         Node c = cylinder().rotate('x', 90).handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 48, 48);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, -48, 48);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 48, -48);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, -48, -48);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 148, 148);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, -148, 148);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, 148, -148);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         makeParallel(s, -148, -148);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1044,11 +1045,11 @@
     public void shouldPickRoughCylinder() {
         Cylinder c = cylinderWith4Divs().handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         c.impl_updatePeer();
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -40);
         assertPickResult(e.getPickResult(),

@@ -1059,11 +1060,11 @@
     public void shouldNotPickRoughCylinderOutsideOfItsTriangles() {
         Cylinder c = cylinderWith4Divs().rotate('y', 45).handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         c.impl_updatePeer();
         makeParallel(s, 48, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1073,11 +1074,11 @@
         c.setTranslateZ(-959);
         c.setCullFace(CullFace.BACK);
         Scene s = scene(group(c), perspective(), true);
         c.impl_updatePeer();
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -40);
         assertPickResult(e.getPickResult(),

@@ -1090,11 +1091,11 @@
         c.setTranslateZ(-959);
         c.setCullFace(CullFace.BACK);
         Scene s = scene(group(c), perspective(), true);
         c.impl_updatePeer();
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1102,11 +1103,11 @@
     public void shouldPickCylinderOnBounds() {
         Cylinder c = cylinder().handleMove(me);
         c.setPickOnBounds(true);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -50);
         assertPickResult(e.getPickResult(),

@@ -1117,11 +1118,11 @@
     public void shouldPickRoughCylinderOnBounds() {
         Cylinder c = cylinderWith4Divs().handleMove(me);
         c.setPickOnBounds(true);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, -50);
         assertPickResult(e.getPickResult(),

@@ -1131,16 +1132,16 @@
     @Test
     public void shouldPickCylinderOnBoundsOutsideOfShape() {
         Node c = cylinder().rotate('x', 90).handleMove(me);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 49, 48);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         MouseEvent e = me.event;
         assertNull(e);
 
         c.setPickOnBounds(true);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 49, -100, -48);
         assertPickResult(e.getPickResult(),
                 c, point(49, -100, -48), 900, NOFACE, null);

@@ -1151,11 +1152,11 @@
         Cylinder c = cylinder().handleMove(me);
         c.setTranslateZ(-1000);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 48.98979);
         assertPickResult(e.getPickResult(),

@@ -1167,11 +1168,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Cylinder c = cylinder().handleMove(me);
         c.setTranslateZ(PERSPECTIVE_CAMERA_Z + 150);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 10, 20, 48.98979);
         assertPickResult(e.getPickResult(),

@@ -1183,11 +1184,11 @@
         Cylinder c = cylinder().handleMove(me);
         c.setTranslateZ(-1049);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1196,11 +1197,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Cylinder c = cylinder().handleMove(me);
         c.setTranslateZ(PERSPECTIVE_CAMERA_Z - 49);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1209,11 +1210,11 @@
         Cylinder c = cylinder().handleMove(me);
         c.setTranslateZ(100);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(true), true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(-50, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -1223,11 +1224,11 @@
         Cylinder c = cylinder().rotate('x', 90).handleMove(me);
         c.setTranslateZ(150);
         c.setCullFace(CullFace.NONE);
         Scene s = scene(group(c), perspective(true), true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(-100, e.getPickResult().getIntersectedPoint().getY(), 0.0001);
     }

@@ -1241,11 +1242,11 @@
         cam.setNearClip(800);
         cam.setFarClip(1800);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1258,11 +1259,11 @@
         cam.setNearClip(800);
         cam.setFarClip(1800);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1275,11 +1276,11 @@
         cam.setNearClip(10);
         cam.setFarClip(40);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1292,11 +1293,11 @@
         cam.setNearClip(10);
         cam.setFarClip(40);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1309,11 +1310,11 @@
         cam.setNearClip(100);
         cam.setFarClip(1800);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(50, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
     }

@@ -1327,11 +1328,11 @@
         cam.setNearClip(150);
         cam.setFarClip(1800);
 
         Scene s = scene(group(c), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(100, e.getPickResult().getIntersectedPoint().getY(), 0.0001);
     }

@@ -1343,11 +1344,11 @@
     @Test
     public void shouldPickMeshXY() {
         Node m = meshXY().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 0);
         assertPickResult(e.getPickResult(),

@@ -1357,11 +1358,11 @@
     @Test
     public void shouldNotPickMeshXYOutsideOfIt() {
         Node m = meshXY().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 70);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1369,11 +1370,11 @@
     public void shouldNotPickCulledMeshXY() {
         MeshView m = meshXY().handleMove(me);
         m.setCullFace(CullFace.FRONT);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1381,11 +1382,11 @@
     public void shouldPickNotCulledMeshXY() {
         MeshView m = meshXY().handleMove(me);
         m.setCullFace(CullFace.NONE);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 0);
         assertPickResult(e.getPickResult(),

@@ -1396,11 +1397,11 @@
     public void shouldPickMeshXYParallel() {
         MeshView m = meshXYParallel().handleMove(me);
         m.setCullFace(CullFace.BACK);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 7);
         assertPickResult(e.getPickResult(),

@@ -1410,11 +1411,11 @@
     @Test
     public void shouldPickMeshXYFlippedTexture() {
         Node m = meshXYFlippedTexture().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 7);
         assertPickResult(e.getPickResult(),

@@ -1424,22 +1425,22 @@
     @Test
     public void shouldNotPickMeshXYBack() {
         Node m = meshXYBack().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 
     @Test
     public void shouldPickMeshYZ() {
         Node m = meshYZ().rotate('y', 90).handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 7, 20, 53);
         assertPickResult(e.getPickResult(),

@@ -1449,11 +1450,11 @@
     @Test
     public void shouldPickMeshGeneral() {
         Node m = meshGeneral().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 10);
         assertPickResult(e.getPickResult(),

@@ -1463,11 +1464,11 @@
     @Test
     public void shouldPickMeshGeneralStretchedTexture() {
         Node m = meshGeneralStretchedTexture().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 10);
         assertPickResult(e.getPickResult(),

@@ -1478,11 +1479,11 @@
     public void shouldPickMeshOnBounds() {
         Node m = meshGeneral().handleMove(me);
         m.setPickOnBounds(true);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 20, 0);
         assertPickResult(e.getPickResult(),

@@ -1493,16 +1494,16 @@
     public void shouldPickMeshOnBoundsOutsideOfTriangles() {
         Node m = meshGeneral().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
 
         makeParallel(s, 90, 90);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         MouseEvent e = me.event;
         assertNull(e);
 
         m.setPickOnBounds(true);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 90, 90, 0);
         assertPickResult(e.getPickResult(),
                 m, point(90, 90, 0), 1000, NOFACE, null);

@@ -1512,11 +1513,11 @@
     public void shouldNotPickMeshXYByPerspectiveCameraFromBehind() {
         Node m = meshXY().handleMove(me);
         m.setTranslateZ(-3000);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1524,11 +1525,11 @@
     public void shouldNotPickMeshXYByParallelCameraFromBehind() {
         MouseEventGenerator g = new MouseEventGenerator();
         Node m = meshXY().handleMove(me);
         m.setTranslateZ(-3000);
         Scene s = scene(group(m), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 60, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 60, 20));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1536,11 +1537,11 @@
     public void shouldNotPickMeshGeneralByPerspectiveCameraFromBehind() {
         Node m = meshGeneral().handleMove(me);
         m.setTranslateZ(-1011);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 10, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1548,11 +1549,11 @@
     public void shouldNotPickMeshGeneralByParallelCameraFromBehind() {
         MouseEventGenerator g = new MouseEventGenerator();
         Node m = meshGeneral().handleMove(me);
         m.setTranslateZ(PERSPECTIVE_CAMERA_Z - 11);
         Scene s = scene(group(m), parallel(), true);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 20));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1560,11 +1561,11 @@
     public void shouldPickMeshByFixedEye() {
         Node m = meshesXY().handleMove(me);
         m.setTranslateZ(50);
         Scene s = scene(group(m), perspective(true), true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(-7, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
         assertEquals(1, e.getPickResult().getIntersectedFace());

@@ -1578,11 +1579,11 @@
         cam.setNearClip(800);
         cam.setFarClip(1800);
 
         Scene s = scene(group(m), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1594,11 +1595,11 @@
         cam.setNearClip(10);
         cam.setFarClip(40);
 
         Scene s = scene(group(m), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNull(e);
     }
 

@@ -1610,11 +1611,11 @@
         cam.setNearClip(47);
         cam.setFarClip(1800);
 
         Scene s = scene(group(m), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED, 500, 400));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertEquals(0, e.getPickResult().getIntersectedPoint().getZ(), 0.0001);
         assertEquals(0, e.getPickResult().getIntersectedFace());

@@ -1626,11 +1627,11 @@
     @Test
     public void shouldPickNearestFace() {
         Node m = meshesXY().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, -7);
         assertPickResult(e.getPickResult(),

@@ -1640,11 +1641,11 @@
     @Test
     public void shouldPickNearestFace2() {
         Node m = meshesXY2().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, -7);
         assertPickResult(e.getPickResult(),

@@ -1654,11 +1655,11 @@
     @Test
     public void shouldPickNearestThroughBackFace() {
         Node m = meshesXYFacingEachOther().handleMove(me);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 0);
         assertPickResult(e.getPickResult(),

@@ -1669,11 +1670,11 @@
     public void shouldPickNearestBackIfNotCulled() {
         MeshView m = meshesXYFacingEachOther().handleMove(me);
         m.setCullFace(CullFace.NONE);
         Scene s = scene(group(m), perspective(), true);
         makeParallel(s, 60, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, -7);
         assertPickResult(e.getPickResult(),

@@ -1684,11 +1685,11 @@
     public void shouldNotPickShapesIfNearerPickExists() {
         MeshView m = meshXY().handleMove(me);
         m.setTranslateZ(-500);
         Scene s = scene(group(meshXY(), cylinder(), sphere(), box(), m), perspective(), true);
         makeParallel(s, 40, 10);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 40, 10, 0);
         assertPickResult(e.getPickResult(),

@@ -1700,11 +1701,11 @@
         MeshView m = meshXY().handleMove(me);
         m.setTranslateZ(-500);
         m.setTranslateX(-30);
         Scene s = scene(group(m, box(), sphere(), cylinder(), meshXY()), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 60, 20, 0);
         assertPickResult(e.getPickResult(),

@@ -1720,11 +1721,11 @@
         Box b = box().handleMove(me);
         b.setDepthTest(DepthTest.DISABLE);
 
         Scene s = scene(group(m, b), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1741,11 +1742,11 @@
         Box b = box().handleMove(me);
         b.setDepthTest(DepthTest.ENABLE);
 
         Scene s = scene(group(m, b), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1761,11 +1762,11 @@
         Box b = box().handleMove(me);
         b.setDepthTest(DepthTest.DISABLE);
 
         Scene s = scene(group(group(closer), group(b)), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1783,11 +1784,11 @@
         Box b2 = box().handleMove(me);
         b2.setTranslateZ(-10);
 
         Scene s = scene(group(group(b1), group(b), group(b2)), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1805,11 +1806,11 @@
         Group parent = group(m, b);
         parent.setDepthTest(DepthTest.DISABLE);
 
         Scene s = scene(parent, perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1826,11 +1827,11 @@
         Box b = box().handleMove(me);
         b.setDepthTest(DepthTest.ENABLE);
 
         Scene s = scene(group(m, b), perspective(), false);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1847,11 +1848,11 @@
         b2.setTranslateX(500);
         b2.setDepthTest(DepthTest.DISABLE);
 
         Scene s = scene(group(b1, b2), perspective(), false);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1871,11 +1872,11 @@
         b2.setTranslateX(500);
         b2.setDepthTest(DepthTest.DISABLE);
 
         Scene s = scene(group(b1, b2, odd), perspective(), true);
         makeParallel(s, 30, 20);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 20, -200);
         assertPickResult(e.getPickResult(),

@@ -1894,11 +1895,11 @@
 
         Group parent = group(r).handleMove(pme);
 
         Scene s = scene(parent, perspective(), true).handleMove(sme);
         makeParallel(s, 150, 160);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         assertNull(me.event);
         assertNull(pme.event);
 
         MouseEvent e = sme.event;

@@ -1916,11 +1917,11 @@
     public void shouldPickFirstShapeWithoutDepthBuffer() {
         Node trg;
         Group root = group(sphere(), trg = cylinder());
         Scene s = scene(root, perspective(), false).handleMove(me);
         makeParallel(s, 0, 0);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertSame(trg, e.getPickResult().getIntersectedNode());
     }

@@ -1929,11 +1930,11 @@
     public void shouldPickNearestShapeWithDepthBuffer() {
         Node trg;
         Group root = group(trg = sphere(), cylinder());
         Scene s = scene(root, perspective(), true).handleMove(me);
         makeParallel(s, 0, 0);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertSame(trg, e.getPickResult().getIntersectedNode());
     }

@@ -1946,11 +1947,11 @@
     public void shouldPickRectWithPickRay() {
         Rectangle r = rect().handleMove(me);
 
         Scene s = scene(group(r), perspective(), true);
         makeParallel(s, 50, 60);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, 60, 0);
         assertPickResult(e.getPickResult(),

@@ -1966,11 +1967,11 @@
         Group parent = group(r).handleMove(pme);
         parent.setTranslateZ(-20);
 
         Scene s = scene(parent, perspective(), true).handleMove(sme);
         makeParallel(s, 150, 60);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 50, 60, 0);
 

@@ -1989,11 +1990,11 @@
         Rectangle r = rect().rotate('y', 45).handleMove(me);
 
         Scene s = scene(group(r), perspective(), true).handleMove(sme);
 
         makeParallel(s, 10, 50);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
 
         MouseEvent e = me.event;
         assertNull(e);
 
         e = sme.event;

@@ -2002,11 +2003,11 @@
         assertPickResult(e.getPickResult(), null, point(10, 50, 0), 1000,
                 NOFACE, null);
         sme.clear();
 
         makeParallel(s, 30, 50);
-        s.impl_processMouseEvent(generateMouseEvent(MouseEvent.MOUSE_MOVED));
+        SceneHelper.processMouseEvent(s, generateMouseEvent(MouseEvent.MOUSE_MOVED));
         e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 21.71572, 50, 0);
         assertPickResult(e.getPickResult(), r, point(21.71572, 50, 0), 1020,
                 NOFACE, null);

@@ -2024,11 +2025,11 @@
         Rectangle r = rect().handleMove(me);
         r.setTranslateZ(70);
 
         Scene s = scene(group(r), parallel(), true).handleMove(sme);
 
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 50));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 50));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 10, 50, 10, 50, 0);
         assertPickResult(e.getPickResult(), r, point(10, 50, 0),

@@ -2046,11 +2047,11 @@
         MouseEventGenerator g = new MouseEventGenerator();
         Rectangle r = rect().rotate('y', 45).handleMove(me);
 
         Scene s = scene(group(r), parallel(), true).handleMove(sme);
 
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 50));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 10, 50));
 
         MouseEvent e = me.event;
         assertNull(e);
 
         e = sme.event;

@@ -2058,11 +2059,11 @@
         assertCoordinates(e, 10, 50, 10, 50, 0);
         assertPickResult(e.getPickResult(), null, point(10, 50, 0),
                 1492.82032, NOFACE, null);
         sme.clear();
 
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 50));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 50));
         e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 50, 21.71572, 50, 0);
         assertPickResult(e.getPickResult(), r, point(21.71572, 50, 0),
                 1512.82032, NOFACE, null);

@@ -2090,11 +2091,11 @@
         r2.setTranslateY(PERSPECTIVE_CAMERA_Y - 50);
         r2.setTranslateZ(nearClip + 0.1);
 
         Scene s = scene(group(r1, r2), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 540, 440));
 
         assertNull(me.event);
         assertNotNull(sme.event);
     }

@@ -2112,17 +2113,17 @@
         r.setTranslateY(PERSPECTIVE_CAMERA_Y - 50);
         r.setTranslateZ(far - 0.1);
 
         Scene s = scene(group(r), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 540, 440));
         assertNotNull(me.event);
 
         me.clear();
         r.setTranslateZ(far + 0.1);
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 540, 440));
         assertNull(me.event);
     }
 
     @Test

@@ -2138,11 +2139,11 @@
         Rectangle r2 = rect().handleMove(sme);
         r2.setTranslateZ(nearClip + 0.1);
 
         Scene s = scene(group(r1, r2), cam, false);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 20, 20));
 
         assertNull(me.event);
         assertNotNull(sme.event);
     }

@@ -2158,17 +2159,17 @@
         Rectangle r = rect().handleMove(me);
         r.setTranslateZ(far - 0.1);
 
         Scene s = scene(group(r), cam, true);
 
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 20, 20));
         assertNotNull(me.event);
 
         me.clear();
         r.setTranslateZ(far + 0.1);
-        s.impl_processMouseEvent(MouseEventGenerator.generateMouseEvent(
+        SceneHelper.processMouseEvent(s, MouseEventGenerator.generateMouseEvent(
                 MouseEvent.MOUSE_MOVED, 20, 20));
         assertNull(me.event);
     }
 
     /*****************  Scenegraph-generated events ********************/

@@ -2179,13 +2180,13 @@
         Box b = box().handle(MouseEvent.MOUSE_CLICKED, me);
 
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 20, 50);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
                 PERSPECTIVE_CAMERA_X - 10, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 20, 50, -200);

@@ -2203,13 +2204,13 @@
         b2.setTranslateZ(-1);
 
         Scene s = scene(group(b1, b2), perspective(), true);
 
         makeParallel(s, 70, 50);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
                 PERSPECTIVE_CAMERA_X - 60, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 15, 50, -201);

@@ -2229,15 +2230,15 @@
         Box b = box().handle(MouseEvent.DRAG_DETECTED, me);
 
         Scene s = scene(group(b), perspective(), true);
 
         makeParallel(s, 20, 50);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
                 PERSPECTIVE_CAMERA_X - 10, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 20, 50, -200);

@@ -2260,15 +2261,15 @@
         b2.setTranslateZ(-1);
 
         Scene s = scene(group(b1, b2), perspective(), true);
 
         makeParallel(s, 70, 50);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
                 PERSPECTIVE_CAMERA_X - 60, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 15, 50, -201);

@@ -2293,19 +2294,19 @@
         b2.setTranslateZ(-1);
 
         Scene s = scene(group(b1, b2), perspective(), true);
 
         makeParallel(s, 70, 50);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_PRESSED,
                 PERSPECTIVE_CAMERA_X - 60, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
                 PERSPECTIVE_CAMERA_X - 60, PERSPECTIVE_CAMERA_Y + 10));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
                 PERSPECTIVE_CAMERA_X - 59, PERSPECTIVE_CAMERA_Y + 10));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_DRAGGED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_RELEASED,
                 PERSPECTIVE_CAMERA_X, PERSPECTIVE_CAMERA_Y));
 
         MouseEvent e = smde.event;
         assertNotNull(e);
         assertCoordinates(e, 15, 50, -201);

@@ -2341,11 +2342,11 @@
         camGroup.setTranslateX(23);
         cam.impl_updatePeer();
 
         Scene s = scene(group(b), cam, true);
         ParentShim.getChildren(s.getRoot()).add(camGroup);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 40, 50, 70.638298, -85.106383);
         assertPickResult(e.getPickResult(),

@@ -2365,11 +2366,11 @@
         camGroup.setTranslateX(23);
         cam.impl_updatePeer();
 
         Scene s = scene(group(b), cam, true);
         ParentShim.getChildren(s.getRoot()).add(camGroup);
-        s.impl_processMouseEvent(g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
+        SceneHelper.processMouseEvent(s, g.generateMouseEvent(MouseEvent.MOUSE_MOVED, 30, 40));
 
         MouseEvent e = me.event;
         assertNotNull(e);
         assertCoordinates(e, 30, 40, 10, 40, -200);
         assertPickResult(e.getPickResult(),

@@ -2402,11 +2403,11 @@
             me.event = event;
         });
 
         me.event = null;
 
-        scene.impl_processMouseEvent(
+        SceneHelper.processMouseEvent(scene,
                 MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_MOVED,
                 350, 350));
 
         assertNotNull(me.event);
     }