code: public MotionEvent getMotionEvent() {
          synchronized (eventLock) {
              if (processedMotionEvent.isEmpty()) {
                  return null;
              } else {
                  return MotionEvent.obtain(processedMotionEvent
                          .get(processedMotionEvent.size() - 1));
              }
          }
      }
docs: Get the latest {@link MotionEvent} processed by the
  {@link GVRCursorController} if there is one (not all
  {@link GVRCursorController}s report {@link MotionEvent}s)
  
  Note that this function also returns a null. To get every
  {@link MotionEvent} reported by the {@link GVRCursorController} use the
  {@link IControllerEvent} or the {@link ISensorEvents} listener to
  query for the {@link MotionEvent} whenever a a callback is made.
  
  The {@link MotionEvent} would be valid for the lifetime of that callback
  and would be recycled and reset to null on completion. Make use to the
  {@link MotionEvent#obtain(MotionEvent)} to clone a copy of the
  {@link MotionEvent}.
  
  @return the latest {@link MotionEvent} processed by the
  {@link GVRCursorController} or null.