private AtomicCollection <IAtomic> CheckCompounds(AtomicCollection <IAtomic> experimentCollection) { foreach (var compound in Knowledge.KnownCompounds) { var result = CanChemistDoCompound(compound, experimentCollection); if (result != null) { var atomStack = new List <AtomStack>(); foreach (var iatomic in result) { atomStack.Add(new AtomStack(iatomic)); experimentCollection.Remove(iatomic); } Compound newCompound = new Compound(atomStack); LogEvents.CompoundGot(compound); CheckCompounds(experimentCollection); } } return(experimentCollection); }