public MuteableURL(String spec) {
		String[] parsed_url = parseURL(spec);
		
		// Then store the parts
		if (parsed_url != null) {
			setProtocol(parsed_url[0]);
			setAuthority(parsed_url[1]);
			setUserInfo(parsed_url[2]);
			setHost(parsed_url[3]);
			try {
				String port_string = parsed_url[4];
				if (port_string != null && port_string.length() > 0) {
					setPort(Integer.parseInt(port_string));
				} else {
					setPort(-1);
				}
			} catch (NumberFormatException nfe) {
				setPort(-1);
				nfe.printStackTrace();
			}
			setPath(parsed_url[5]);
			setQuery(parsed_url[6]);
			setFragment(parsed_url[7]);
		}
		
		/*
		System.out.println("protocol: " + this.protocol);
		System.out.println("authority: " + this.authority);
		System.out.println("user_info: " + this.userInfo);
		System.out.println("host: " + this.host);
		System.out.println("port: " + this.port);
		System.out.println("path: " + this.path);
		System.out.println("query: " + this.query);
		System.out.println("fragment: " + this.fragment);*/
	}