code: public static String adjacentHash(String hash, Direction direction, int steps) {
          if (steps < 0)
              return adjacentHash(hash, direction.opposite(), Math.abs(steps));
          else {
              String h = hash;
              for (int i = 0; i < steps; i++)
                  h = adjacentHash(h, direction);
              return h;
          }
      }
docs: Returns the adjacent hash N steps in the given {@link Direction}. A
  negative N will use the opposite {@link Direction}.
  
  @param hash
  origin hash
  @param direction
  to desired hash
  @param steps
  number of hashes distance to desired hash
  @return hash at position in direction a number of hashes away (steps)