static SourceCode Source (String inputName, String fileExtension)
	{
		
		short fileIndex = 0;
		short cacheSpace = 50;  //Array space allocated at start of method.
		boolean indexIsValid = true;  //Tracks if the file continues.
		String line [] = new String [cacheSpace];
		SourceCode input;
		line [0] = " ";

		try
		{
			BufferedReader fr = new BufferedReader (new FileReader (inputName +"."+ fileExtension));

			do
			{
				ErrorLog.debug("Source Code reader started.");
				
				while ((fileIndex < cacheSpace) && (indexIsValid))  //Write 50 lines to line.
				{
					ErrorLog.debug("Loop entered.");
					line[fileIndex] = fr.readLine();
					indexIsValid = (line[fileIndex] != null);
					ErrorLog.debug(Short.toString(fileIndex) +" "+ line[fileIndex]);
					fileIndex++;
				}

				ErrorLog.debug ("fileIndex < cacheSpace && indexIsValid loop terminated.");
				
				if(indexIsValid)  //If file continues past 50 lines, expand line using temp as a buffer.
				{
					cacheSpace += 50;
					String temp [] = new String [cacheSpace];
					System.arraycopy (line, 0, temp, 0, cacheSpace - 50);  //Assumes fileIndex is equal to cache size before that was increased.
					line = temp;
					ErrorLog.debug (Short.toString(cacheSpace));
				}
				else
				{
					fileIndex--;  //Reader is still generating source code objects with 1 string too many.  Was 2 strings too many before this decrement.
				}
			}
			while (indexIsValid);
			fileIndex--; //Stopgap, until I understand the above problem better.
			
			ErrorLog.debug("do while indexIsValid loop terminated.");

			fr.close();  //Throws IOException instead of FnF
			
			input = new SourceCode (fileIndex + 1);
			System.arraycopy (line, 0 , input.line, 0, fileIndex);
			
			ErrorLog.debug("Everything copied from input file.");
		}
			catch (IOException e)  //Input file doesn't exist.
			{
				ErrorLog.addError(e.getMessage() + "No input file found");
				input = new SourceCode (0);
			}
		
		return input;
	}