docs: public void processData() {
  
          // get number of hands
          float handNum = readbackBuffer.get(0);
          int count = 1;
  
          boolean rightHandProcessed = false;
          boolean leftHandProcessed = false;
  
          for (int handCount = 0; handCount < handNum; handCount++) {
              IOHand ioHand;
              HandIODevice device;
              if (handCount == 0) {
                  ioHand = rightHand;
                  device = rightDevice;
                  rightHandProcessed = true;
                  GVRSceneObject right = rightHand.getSceneObject();
                  if (!right.isEnabled()) {
                      rightHand.getSceneObject().setEnable(true);
                      device.setVisible(true);
                  }
              } else {
                  ioHand = leftHand;
                  device = leftDevice;
                  leftHandProcessed = true;
                  GVRSceneObject left = leftHand.getSceneObject();
                  if (!left.isEnabled()) {
                      leftHand.getSceneObject().setEnable(true);
                      device.setVisible(true);
                  }
              }
  
              //Process Thumbs
              IOFinger ioFinger = ioHand.getIOFinger(IOFinger.THUMB);
              for (int boneNum = 0; boneNum < 4; boneNum++) {
                  IOJoint ioJoint = ioFinger.getIOJoint(boneNum + 1);
                  if (ioJoint != null) {
                      ioJoint.setPosition(readbackBuffer.get(count), readbackBuffer.get
                              (count + 1), readbackBuffer.get(count + 2));
                  }
                  count = count + 3;
              }
  
              setBones(ioFinger);
  
              if (handCount == 0) {
                  // right hand
                  for (int fingerNum = 1; fingerNum < 5; fingerNum++) {
                      ioFinger = ioHand.getIOFinger(fingerNum);
                      for (int boneNum = 0; boneNum < 4; boneNum++) {
                          IOJoint ioJoint = ioFinger.getIOJoint(boneNum + 1);
                          if (ioJoint != null) {
                              ioJoint.setPosition(readbackBuffer.get(count), readbackBuffer.get
                                      (count + 1), readbackBuffer.get(count + 2));
                          }
                          count = count + 3;
                      }
                      setBones(ioFinger);
                  }
              } else {
                  // left hand
                  for (int fingerNum = 4; fingerNum > 0; fingerNum--) {
                      ioFinger = ioHand.getIOFinger(fingerNum);
                      for (int boneNum = 0; boneNum < 4; boneNum++) {
                          IOJoint ioJoint = ioFinger.getIOJoint(boneNum + 1);
                          if (ioJoint != null) {
                              ioJoint.setPosition(readbackBuffer.get(count), readbackBuffer.get
                                      (count + 1), readbackBuffer.get(count + 2));
                          }
                          count = count + 3;
                      }
                      setBones(ioFinger);
                  }
              }
  
              //get palm position
              ioHand.getPalmSceneObject().getTransform().setPosition(readbackBuffer.get(count),
                      readbackBuffer.get(count + 1), readbackBuffer.get(count + 2));
              count = count + 3;
              cursorRotation.identity();
              device.process(ioHand.getIOFinger(IOFinger.INDEX).getIOJoint(IOJoint.TIP).getPosition(),
                      cursorRotation);
          }
  
          if (!rightHandProcessed) {
              GVRSceneObject right = rightHand.getSceneObject();
              if (right.isEnabled()) {
                  rightHand.getSceneObject().setEnable(false);
              }
              rightDevice.setVisible(false);
          }
          if (!leftHandProcessed) {
              GVRSceneObject left = leftHand.getSceneObject();
              if (left.isEnabled()) {
                  leftHand.getSceneObject().setEnable(false);
              }
              leftDevice.setVisible(false);
          }
      }