public void readAndParse() throws IOException
	{
		String currentLine;
		int i = 0;
		Map<Character,Set<Tile>> layoutToUse = wholeLayout1;
		try{
			while((currentLine = cleanLine(lineReader.readLine())) != null)
			{
				if(currentLine.length() > 0)
				{
					if(currentLine.charAt(0) == '*' && layoutToUse == wholeLayout1)
						layoutToUse = wholeLayout2;
					else if(currentLine.charAt(0) == '*')
						throw new IllegalArgumentException("Parse error: More than one * line!");
					else if(pushLineToSet(currentLine, layoutToUse, i))
						i--;	// Y coordinates must be descending as the file is read top to bottom
				}
			}
		} catch (IllegalArgumentException e)
		{
			throw new IllegalArgumentException(e.getMessage() + " at line #" + (-i));
		}
		// Now parse the wholeLayouts to the Board and WinningPosition.
		parseLayouts();
	}