@Override
 public final int getPathData(
     final int x, final int y, final CellPathData[] cellPathData, final int index) {
   assert this.checkGetPathData(x, y, cellPathData);
   final CellPathData data = cellPathData[index];
   data.m_x = x;
   data.m_y = y;
   final int cellIndex = this.getIndex(x, y);
   data.m_z = this.m_zs[cellIndex];
   data.m_hollow = ((this.m_movLos[cellIndex] & 0x1) == 0x1);
   data.m_height = this.m_heights[cellIndex];
   data.m_cost = this.m_costs[cellIndex];
   data.m_murfinInfo = this.m_murfins[cellIndex];
   data.m_miscProperties = this.m_properties[cellIndex];
   return 1;
 }
 @Override
 public final int getPathData(
     final int x, final int y, final CellPathData[] cellPathData, final int index) {
   assert this.checkGetPathData(x, y, cellPathData);
   int numZ = 1;
   final CellPathData data = cellPathData[index];
   data.m_x = x;
   data.m_y = y;
   data.m_z = this.getZ(x, y);
   data.m_height = (byte) Math.max(0, data.m_z);
   data.m_cost = (byte) (super.isCellBlocked(x, y) ? -1 : 7);
   data.m_hollow = false;
   data.m_murfinInfo = (byte) this.getMurFinInfo(x, y);
   data.m_miscProperties = (byte) this.getMiscProperties(x, y);
   if (this.m_attachedBuilding.length != 0) {
     for (final AbstractBuildingStruct building : this.m_attachedBuilding) {
       final int result = building.getPathData(x, y, cellPathData, index + numZ);
       if (result != -1) {
         numZ += mergeSameAltitude(cellPathData, index, index + numZ, result);
       }
     }
   }
   return numZ;
 }