public class Level
{
    public static final int CENTRE_HEIGHT = 3;  // TODO only makes sense for 5x5 so need to fix this!!
    public static final int CENTRE_WIDTH = 3;

    public Level (int height, int width, int level, boolean debug)
    {
        _level = level;
        _height = height;
        _width = width;
        _debug = debug;

        _theWorld = new Tile[_height][_width];

        for (int i = 0; i < _height; i++)
        {
            for (int j = 0; j < _width; j++)
            {
                _theWorld[i][j] = new Tile(TileId.EMPTY_SPACE);
            }
        }

        _theWorld[CENTRE_HEIGHT][CENTRE_WIDTH] = new Tile(TileId.NESTED_GRID);
    }

    @Override
    public String toString ()
    {
        String str = "";

        for (int i = 0; i < _height; i++)
        {
            for (int j = 0; j < _width; j++)
            {
                if ((i == CENTRE_HEIGHT) && (j == CENTRE_WIDTH))
                    str += TileId.NESTED_GRID;
                else
                    str += _theWorld[i][j];
            }
            
            str += "\n";
        }

        return str;
    }

    private Tile[][] _theWorld;
    private int _level;
    private int _height;
    private int _width;
    private boolean _debug;
}
@@ -666,24 +666,252 @@
 ID);%0A    %7D%0A%0A
+    public Level (Tile%5B%5D%5B%5D theWorld, int level, boolean debug)%0A    %7B%0A        _theWorld = theWorld;%0A        _height = _theWorld.length;%0A        _width = _theWorld%5B0%5D.length;%0A        _level = level;%0A        _debug = debug;%0A    %7D%0A%0A
     @Overrid
@@ -1348,24 +1348,761 @@
 str;%0A    %7D%0A%0A
+    @Override%0A    public boolean equals (Object obj)%0A    %7B%0A        if (obj == null)%0A            return false;%0A%0A        if (this == obj)%0A            return true;%0A        %0A        if (getClass() == obj.getClass())%0A        %7B%0A            Level temp = (Level) obj;%0A%0A            if ((temp._height == _height) && (temp._width == _width))%0A            %7B%0A                for (int i = 0; i %3C _height; i++)%0A                %7B%0A                    for (int j = 0; j %3C _width; j++)%0A                    %7B%0A                        if (temp._theWorld%5Bi%5D%5Bj%5D.type() != _theWorld%5Bi%5D%5Bj%5D.type())%0A                            return false;%0A                    %7D%0A                %7D%0A%0A                return true;%0A            %7D%0A        %7D%0A%0A        return false;%0A    %7D%0A%0A
     private 

Update Level.java