private static Pair<Boolean, Integer> huntDown(ChemistryUnit in, ChemistryUnit inExpression,
			ChemistryUnit outExpression){
		if(inExpression != null && in.equals(inExpression)){
			return Pair.make(true, 1);
		}
		else if(outExpression != null && in.equals(outExpression)){
			return Pair.make(false, 1);
		}
		else if(in.getType() == ChemistryUnit.TYPE_BASE){
			return Pair.make(false, -1);
		}
		for(Map.Entry<ChemistryUnit, Integer> cu : in.getSubUnits().entrySet()){
			Pair<Boolean, Integer> pair = huntDown(cu.getKey(), inExpression, outExpression);
			if(pair.getValueTwo().equals(-1)){
				continue;
			}
			else{
				return Pair.make(pair.getValueOne(), pair.getValueTwo() * cu.getValue());
			}
		}
		return Pair.make(false, -1);
	}