void (@NotNull RefElementImpl refFrom, boolean forWriting, boolean forReading, UExpression expressionFrom) { addInReference(refFrom); boolean referencedFromClassInitializer = false; if (forWriting && expressionFrom != null) { UClassInitializer initializer = UastUtils.getParentOfType(expressionFrom, UClassInitializer.class); if (initializer != null && refFrom.getPsiElement() == UastUtils.getParentOfType(initializer, UClass.class).getSourcePsi()) { UExpression qualifierExpression = expressionFrom instanceof UQualifiedReferenceExpression ? ((UQualifiedReferenceExpression)expressionFrom).getReceiver() : null; if (qualifierExpression == null || qualifierExpression instanceof UThisExpression) { referencedFromClassInitializer = true; } } } if (forWriting) { setUsedForWriting(true); } if (forReading) { setUsedForReading(true); } setForbidProtectedAccess(refFrom, expressionFrom); getRefManager().fireNodeMarkedReferenced(this, refFrom, referencedFromClassInitializer, forReading, forWriting, expressionFrom == null ? null : expressionFrom.getSourcePsi()); }