code: public boolean moveTargetPosition(float[] npos, NavMeshQuery navquery, QueryFilter filter) {
          // Move along navmesh and update new position.
          Result<MoveAlongSurfaceResult> masResult = navquery.moveAlongSurface(m_path.get(m_path.size() - 1), m_target,
                  npos, filter);
          if (masResult.succeeded()) {
              m_path = mergeCorridorEndMoved(m_path, masResult.result.getVisited());
              // TODO: should we do that?
              // Adjust the position to stay on top of the navmesh.
              /*
               * float h = m_target[1]; navquery->getPolyHeight(m_path[m_npath-1],
               * result, &h); result[1] = h;
               */
              vCopy(m_target, masResult.result.getResultPos());
              return true;
          }
          return false;
      }
docs: Moves the target from the curent location to the desired location, adjusting the corridor as needed to reflect
  the change. Behavior: - The movement is constrained to the surface of the navigation mesh. - The corridor is
  automatically adjusted (shorted or lengthened) in order to remain valid. - The new target will be located in the
  adjusted corridor's last polygon.
  
  The expected use case is that the desired target will be 'near' the current corridor. What is considered 'near'
  depends on local polygon density, query search extents, etc. The resulting target will differ from the desired
  target if the desired target is not on the navigation mesh, or it can't be reached using a local search.
  
  @param npos
  The desired new target position. [(x, y, z)]
  @param navquery
  The query object used to build the corridor.
  @param filter
  The filter to apply to the operation.