void (String propertyName, PsiType type, PsiElement element, PsiSubstitutor substitutor) { if (result.containsKey(propertyName)) return; Trinity<PsiType, PsiElement, PsiSubstitutor> pair = map.get(propertyName); if (pair != null) { if (element instanceof PsiMethod && pair.second instanceof PsiField) { // methods should override fields } else { return; } } map.put(propertyName, Trinity.create(type, element, substitutor)); }