@Override
    public boolean equals(Object o) {
        boolean isNotPuzzuleNode = ! (o instanceof PuzzuleNode);
        if ( isNotPuzzuleNode ) {
            throw new RuntimeException("パズルノードではありません。");
        }

        PuzzuleNode puzzuleNode = (PuzzuleNode) o;
        return Arrays.deepEquals(this.puzzuleBoard, puzzuleNode.puzzuleBoard);
    }