if (ti != null) { tileInstanceProperties[ty - bounds.y][tx - bounds.x] = new Properties(); } else { tileInstanceProperties[ty - bounds.y][tx - bounds.x] = null; }
    public void setTileAt(int tx, int ty, Tile ti) {        try {            if (canEdit()) {                map[ty - bounds.y][tx - bounds.x] = ti;                if (ti != null) {                    tileInstanceProperties[ty - bounds.y][tx - bounds.x] = new Properties();                } else {                    tileInstanceProperties[ty - bounds.y][tx - bounds.x] = null;                }            }        } catch (ArrayIndexOutOfBoundsException e) {            // Silently ignore out of bounds exception        }    }