private void parsePath(List list, String path) {
		if (path == null) {
			return;
		}
		
		if (path.length() == 0) {
			// is_absolute_path is ambiguous so we won't change anything
			this.file = null;
			return;
		}
		
		// Determine if the path is absolute
		if (path.startsWith(PATH_DELIM)) {
			this.is_absolute_path = true;
		} else {
			this.is_absolute_path = false;
		}
		
		StringTokenizer path_tok = new StringTokenizer(path, PATH_DELIM, true);
		boolean prev_token_was_delim = false;
		while (path_tok.hasMoreTokens()) {
			String token = path_tok.nextToken();
			
			String segment = null;
			if (PATH_DELIM.equals(token)) {
				if (prev_token_was_delim) {
					segment = "";
				} else {
					segment = null;
				}
				
				if (!path_tok.hasMoreTokens()) {
					// No file since we end in a path delimiter
					this.file = null;
				}
				
				prev_token_was_delim = true;
			} else {
				segment = token;
				
				if (!path_tok.hasMoreTokens()) {
					this.file = segment;
					segment = null;
				}
				
				prev_token_was_delim = false;
			}
			
			if (segment != null) {
				list.add(segment);
			}
		}
	}