private final ZSamplePoint<TZ> closeSample(int x, int y) {
   ZSamplePoint<TZ> A = sampleGrid.getOrCreate(x, y);
   A.setZ(
       metric.closeSample(
           A.up() != null ? A.up().getZ() : null,
           A.down() != null ? A.down().getZ() : null,
           A.right() != null ? A.right().getZ() : null,
           A.left() != null ? A.left().getZ() : null));
   return A;
 }