The cause is thread unsafe code in org.jboss.tools.jsf.jsf2.bean.model.impl.DefinitionContext. When one thread reads from HashSet while another modifies it, sometimes reading slips into eternal cycle. That is a feature of implementation of java.util.HashSet, and the only way to avoid it is to provide thread safety. I will open an issue.