case 0: return new Coords(x, y - 1); case 1: return new Coords(x + 1, y - (isXOdd() ? 0 : 1)); case 2: return new Coords(x + 1, y + (isXOdd() ? 1 : 0)); case 3: return new Coords(x, y + 1); case 4: return new Coords(x - 1, y + (isXOdd() ? 1 : 0)); case 5: return new Coords(x - 1, y - (isXOdd() ? 0 : 1)); default: return new Coords(this);
case 0 : return new Coords(x, y - 1); case 1 : return new Coords(x + 1, y - (x + 1 & 1)); case 2 : return new Coords(x + 1, y + (x & 1)); case 3 : return new Coords(x, y + 1); case 4 : return new Coords(x - 1, y + (x & 1)); case 5 : return new Coords(x - 1, y - (x + 1 & 1)); default: return new Coords(x, y);
    public Coords translated(int direction) {        switch(direction) {        case 0:            return new Coords(x, y - 1);        case 1:            return new Coords(x + 1, y - (isXOdd() ? 0 : 1));        case 2:            return new Coords(x + 1, y + (isXOdd() ? 1 : 0));        case 3:            return new Coords(x, y + 1);        case 4:            return new Coords(x - 1, y + (isXOdd() ? 1 : 0));        case 5:            return new Coords(x - 1, y - (isXOdd() ? 0 : 1));        default:            return new Coords(this);        }    }