public function getHash()
	{
		$data = [];

		foreach($this->instrumentors as $instrumentor)
		{
			$data[get_class($instrumentor)] = NULL;
			
			if($instrumentor instanceof CachingInstrumentorInterface)
			{
				$data[get_class($instrumentor)] = $instrumentor->getHash();
			}
			else
			{
				$data[get_class($instrumentor)] = NULL;
			}
		}
		
		ksort($data);
		
		if($this->needsSort)
		{
			sort($this->nameBlacklist);
			sort($this->supertypeBlacklist);
			
			$this->needsSort = false;
		}
		
		$prefix = md5(implode('|', $this->nameBlacklist));
		$prefix .= md5(implode('|', $this->supertypeBlacklist));

		return $prefix . md5(implode('|', array_keys($data)) . '*' . implode('|', array_filter($data, function($el) {
			return $el !== NULL;
		})));
	}