public static IList read(InputStream input) throws ThinklabException {
		
		String s = "";
		
		int c;
		try {
			c = input.read();
		} catch (IOException e) {
			throw new ThinklabIOException(e);
		}
		int pcount = 0;
		boolean inString = false;
		
		while (c != -1) {
		
			s = s + (char)c;
			
			if (c == '"') {
				inString = !inString;
			} else if (!inString) {
				if (c == '(')
					pcount ++;
				else if (c == ')') {
					pcount --;
					if (pcount == 0)
						break;
				}
			}
			try {
				c = input.read();
			} catch (IOException e) {
				throw new ThinklabIOException(e);
			}
		}
		
		if (s.trim().startsWith("("))
			return PolyList.parse(s);
		
		return null;
	}