private void offerDonation(int newPriority, ThreadState masterThread)
		 {
			 deadlockKiller.add(masterThread);
			 if (masterThread.getEffectivePriority() == newPriority || masterThread.hasGreaterPriorityThan(newPriority))
			 {
				 return;
			 }
			 
			 for(PriorityQueue queue: masterThread.listOfQueues)
			 {
				 if (queue.transferPriority && !queue.queue.isEmpty())
				 {
					 ThreadState activeThread = queue.activeThreadState;
					 if(masterThread != activeThread && !activeThread.hasGreaterPriorityThan(newPriority)
							 && !deadlockKiller.contains(activeThread))
					 {
						 offerDonation(newPriority, activeThread);
					 }
				 }
			 }
			 
			 if (!masterThread.hasGreaterPriorityThan(newPriority))
			 {
				 masterThread.effectivePriority = newPriority;
			 }
			 
		 }