public function locate($file, $group = null) {

		if (isset($this->working_group)) {
			$group = $this->working_group;
		} else if (! isset($group)) {
			throw new RuntimeException("Must set group or working group to locate file.");
		}
		
		if (isset($this->found[$group][$file])) {
			return $this->found[$group][$file];
		}

		if (! isset($this->groups[$group])) {
			throw new InvalidArgumentException("Unknown filesystem group $group.");
		}

		foreach ( $this->groups[$group] as $path => $depth ) {
			
			if ($found = $this->search($path, $file, $depth)) {
				return $this->found[$group][$file] = $found;
			}
		}
		
		return null;
	}