void addReference(RefElement refWhat,
                    PsiElement psiWhat,
                    UElement from,
                    boolean forWriting,
                    boolean forReading,
                    UExpression expression) {
    PsiElement psiFrom = from.getPsi();
    if (refWhat != null) {
      if (refWhat instanceof RefParameter) {
        if (forWriting) {
          ((RefParameter)refWhat).parameterReferenced(true);
        }
        if (forReading) {
          ((RefParameter)refWhat).parameterReferenced(false);
        }
      }
      addOutReference(refWhat);
      if (refWhat instanceof RefJavaFileImpl) {
        ((RefJavaFileImpl)refWhat).addInReference(this);
        getRefManager().fireNodeMarkedReferenced(psiWhat, psiFrom);
      } else if (refWhat instanceof RefJavaElementImpl) {
        ((RefJavaElementImpl)refWhat).markReferenced(this, forWriting, forReading, expression);
      }
    } else {
      getRefManager().fireNodeMarkedReferenced(psiWhat, psiFrom);
    }
  }
void addReference(RefElement refWhat,
                    PsiElement psiWhat,
                    UElement from,
                    boolean forWriting,
                    boolean forReading,
                    UExpression expression)