package org.jetbrains.plugins.clojure.psi.api.symbols; import org.jetbrains.plugins.clojure.psi.ClojurePsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; import org.jetbrains.plugins.clojure.psi.resolve.processors.ResolveKind; /** * @author ilyas */ public interface ClSymbol extends ClojurePsiElement, PsiPolyVariantReference, PsiNamedElement { final ClSymbol[] EMPTY_ARRAY = new ClSymbol[0]; @NotNull String getNameString(); @Nullable PsiElement getReferenceNameElement(); @Nullable String getReferenceName(); @Nullable ClSymbol getRawQualifierSymbol(); /** * Raw qualifier or in case of it's empty it can be symbol from import list * (import '(java.util Date)) * @return real qualifier of the symbol */ @Nullable ClSymbol getQualifierSymbol(); boolean isQualified(); @Nullable PsiElement getSeparatorToken(); public ResolveKind[] getKinds(); }