if (!"file".equals(base.getProtocol())) return location;
	private static URL makeRelative(URL base, URL location) throws MalformedURLException {		if (base == null)			return location;		boolean reference = location.getProtocol().equals(REFERENCE_PROTOCOL);		URL nonReferenceLocation = location;		if (reference)			nonReferenceLocation = new URL(location.getPath());		if (!"file".equals(base.getProtocol())) //$NON-NLS-1$			return location;		// if some URL component does not match, return the original location		if (!base.getProtocol().equals(nonReferenceLocation.getProtocol()))			return location;		if (base.getHost() == null ^ nonReferenceLocation.getHost() == null)			return location;		if (base.getHost() != null && !base.getHost().equals(nonReferenceLocation.getHost()))			return location;		if (base.getPort() != nonReferenceLocation.getPort())			return location;		File locationPath = new File(nonReferenceLocation.getPath());		// if location is not absolute, return original location 		if (!locationPath.isAbsolute())			return location;		File relativePath = makeRelative(new File(base.getPath()), locationPath);		String urlPath = relativePath.getPath();		if (File.separatorChar != '/')			urlPath = urlPath.replace(File.separatorChar, '/');		if (nonReferenceLocation.getPath().endsWith("/")) //$NON-NLS-1$			// restore original trailing slash 			urlPath += '/';		URL relativeURL = new URL(base.getProtocol(), base.getHost(), base.getPort(), urlPath);		if (reference)			relativeURL = new URL(REFERENCE_SCHEME + relativeURL.toExternalForm());		return relativeURL;	}