public Record []
run() {
	if (done)
		reset();
	if (name.isAbsolute())
		resolve(name, null);
	else if (searchPath == null)
		resolve(name, Name.root);
	else {
		if (name.labels() > defaultNdots)
			resolve(name, Name.root);
		if (done)
			return answers;

		for (int i = 0; i < searchPath.length; i++) {
			resolve(name, searchPath[i]);
			if (done)
				return answers;
			else if (foundAlias)
				break;
		}
	}
	if (!done) {
		if (badresponse) {
			result = TRY_AGAIN;
			error = badresponse_error;
			done = true;
		} else if (timedout) {
			result = TRY_AGAIN;
			error = "timed out";
			done = true;
		} else if (networkerror) {
			result = TRY_AGAIN;
			error = "network error";
			done = true;
		} else if (nxdomain) {
			result = HOST_NOT_FOUND;
			done = true;
		} else if (referral) {
			result = UNRECOVERABLE;
			error = "referral";
			done = true;
		} else if (nametoolong) {
			result = UNRECOVERABLE;
			error = "name too long";
			done = true;
		}
	}
	return answers;
}
Performs the lookup, using the specified Cache, Resolver, and search path.
@return The answers, or null if none are found.
src/main/java/core/org/xbill/DNS/Lookup.java