@Override
  protected int calcDistance(final Point source, final Point point) {
    if(source.x <= point.x){
      return Integer.MAX_VALUE;
    }
    else{
      final int scale = (point.y - source.y) >= 0 ? 3 : 4;
      return (source.x - point.x) + Math.abs(point.y - source.y) * scale;
    }
  }
@Override
  protected int calcDistance(final Point source, final Point point)