public final class org/jetbrains/kotlin/analysis/api/AnalyzeKt {
	public static final fun analyze (Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
	public static final fun analyze (Lorg/jetbrains/kotlin/psi/KtElement;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
	public static final fun analyzeCopy (Lorg/jetbrains/kotlin/psi/KtElement;Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaContextParameterApi : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaExperimentalApi : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaIdeApi : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaImplementationDetail : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaK1Unsupported : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaNonPublicApi : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaPlatformInterface : java/lang/annotation/Annotation {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/KaSession : org/jetbrains/kotlin/analysis/api/components/KaAnalysisScopeProvider, org/jetbrains/kotlin/analysis/api/components/KaCompilerFacility, org/jetbrains/kotlin/analysis/api/components/KaCompilerPluginGeneratedDeclarationsProvider, org/jetbrains/kotlin/analysis/api/components/KaCompletionCandidateChecker, org/jetbrains/kotlin/analysis/api/components/KaDataFlowProvider, org/jetbrains/kotlin/analysis/api/components/KaDiagnosticProvider, org/jetbrains/kotlin/analysis/api/components/KaEvaluator, org/jetbrains/kotlin/analysis/api/components/KaExpressionInformationProvider, org/jetbrains/kotlin/analysis/api/components/KaExpressionTypeProvider, org/jetbrains/kotlin/analysis/api/components/KaJavaInteroperabilityComponent, org/jetbrains/kotlin/analysis/api/components/KaKDocProvider, org/jetbrains/kotlin/analysis/api/components/KaOriginalPsiProvider, org/jetbrains/kotlin/analysis/api/components/KaReferenceShortener, org/jetbrains/kotlin/analysis/api/components/KaRenderer, org/jetbrains/kotlin/analysis/api/components/KaResolveExtensionInfoProvider, org/jetbrains/kotlin/analysis/api/components/KaResolver, org/jetbrains/kotlin/analysis/api/components/KaScopeProvider, org/jetbrains/kotlin/analysis/api/components/KaSignatureSubstitutor, org/jetbrains/kotlin/analysis/api/components/KaSourceProvider, org/jetbrains/kotlin/analysis/api/components/KaSubstitutorProvider, org/jetbrains/kotlin/analysis/api/components/KaSymbolInformationProvider, org/jetbrains/kotlin/analysis/api/components/KaSymbolRelationProvider, org/jetbrains/kotlin/analysis/api/components/KaTypeCreator, org/jetbrains/kotlin/analysis/api/components/KaTypeCreatorProvider, org/jetbrains/kotlin/analysis/api/components/KaTypeInformationProvider, org/jetbrains/kotlin/analysis/api/components/KaTypeProvider, org/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker, org/jetbrains/kotlin/analysis/api/components/KaVisibilityChecker, org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner, org/jetbrains/kotlin/analysis/api/symbols/KaSymbolProvider {
	public abstract fun getUseSiteModule ()Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;
	public fun getUseSiteSession ()Lorg/jetbrains/kotlin/analysis/api/KaSession;
	public fun restoreSymbol (Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;
}

public final class org/jetbrains/kotlin/analysis/api/KaSessionKt {
	public static final fun getModule (Lorg/jetbrains/kotlin/analysis/api/KaSession;Lcom/intellij/psi/PsiElement;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/KaSpiExtensionPoint : java/lang/annotation/Annotation {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotated {
	public abstract fun getAnnotations ()Lorg/jetbrains/kotlin/analysis/api/annotations/KaAnnotationList;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotation : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getArguments ()Ljava/util/List;
	public abstract fun getClassId ()Lorg/jetbrains/kotlin/name/ClassId;
	public abstract fun getConstructorSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaConstructorSymbol;
	public abstract fun getPsi ()Lorg/jetbrains/kotlin/psi/KtCallElement;
	public abstract fun getUseSiteTarget ()Lorg/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationList : java/util/List, kotlin/jvm/internal/markers/KMappedMarker, org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun contains (Lorg/jetbrains/kotlin/name/ClassId;)Z
	public abstract fun get (Lorg/jetbrains/kotlin/name/ClassId;)Ljava/util/List;
	public abstract fun getClassIds ()Ljava/util/Collection;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getSourcePsi ()Lorg/jetbrains/kotlin/psi/KtElement;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$ArrayValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
	public abstract fun getValues ()Ljava/util/Collection;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$ClassLiteralValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
	public abstract fun getClassId ()Lorg/jetbrains/kotlin/name/ClassId;
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$ConstantValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
	public abstract fun getValue ()Lorg/jetbrains/kotlin/analysis/api/base/KaConstantValue;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$EnumEntryValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
	public abstract fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$NestedAnnotationValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
	public abstract fun getAnnotation ()Lorg/jetbrains/kotlin/analysis/api/annotations/KaAnnotation;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue$UnsupportedValue : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue {
}

public final class org/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValueKt {
	public static final fun renderAsSourceCode (Lorg/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue;)Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/annotations/KaNamedAnnotationValue : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getExpression ()Lorg/jetbrains/kotlin/analysis/api/annotations/KaAnnotationValue;
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getSourcePsi ()Lorg/jetbrains/kotlin/psi/KtElement;
	public abstract fun getValue ()Ljava/lang/Object;
	public abstract fun render ()Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$BooleanValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Boolean;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$ByteValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Byte;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$CharValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Character;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$DoubleValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Double;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$ErrorValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getErrorMessage ()Ljava/lang/String;
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue ()Ljava/lang/Void;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$FloatValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Float;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$IntValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Integer;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$LongValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public abstract fun getValue ()Ljava/lang/Long;
	public synthetic fun getValue ()Ljava/lang/Object;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$NullValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$ShortValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue ()Ljava/lang/Short;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$StringValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue ()Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$UByteValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue-w2LRezQ ()B
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$UIntValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue-pVg5ArA ()I
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$ULongValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue-s-VKNKU ()J
}

public abstract interface class org/jetbrains/kotlin/analysis/api/base/KaConstantValue$UShortValue : org/jetbrains/kotlin/analysis/api/base/KaConstantValue {
	public synthetic fun getValue ()Ljava/lang/Object;
	public abstract fun getValue-Mh2AYeg ()S
}

public final class org/jetbrains/kotlin/analysis/api/components/DefaultTypeClassIds {
	public static final field INSTANCE Lorg/jetbrains/kotlin/analysis/api/components/DefaultTypeClassIds;
	public final fun getANY ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getBOOLEAN ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getBYTE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getCHAR ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getCHAR_SEQUENCE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getDOUBLE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getFLOAT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getINT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getLONG ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getNOTHING ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getPRIMITIVES ()Ljava/util/Set;
	public final fun getSHORT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getSTRING ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getUNIT ()Lorg/jetbrains/kotlin/name/ClassId;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaAnalysisScopeProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun canBeAnalysed (Lcom/intellij/psi/PsiElement;)Z
	public abstract fun getAnalysisScope ()Lcom/intellij/psi/search/GlobalSearchScope;
}

public abstract class org/jetbrains/kotlin/analysis/api/components/KaBuiltinTypes : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public fun <init> ()V
	public abstract fun getAnnotationType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getAny ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getBoolean ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getByte ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getChar ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getDouble ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getFloat ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getInt ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getLong ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getNothing ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getNullableAny ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getNullableNothing ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getShort ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getString ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getThrowable ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getUnit ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaClassTypeBuilder : org/jetbrains/kotlin/analysis/api/components/KaTypeBuilder {
	public abstract fun argument (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/types/Variance;)V
	public abstract fun argument (Lorg/jetbrains/kotlin/analysis/api/types/KaTypeProjection;)V
	public static synthetic fun argument$default (Lorg/jetbrains/kotlin/analysis/api/components/KaClassTypeBuilder;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/types/Variance;ILjava/lang/Object;)V
	public abstract fun getArguments ()Ljava/util/List;
	public abstract fun getNullability ()Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public abstract fun isMarkedNullable ()Z
	public abstract fun setMarkedNullable (Z)V
	public abstract fun setNullability (Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;)V
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaDataFlowProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun getSmartCastInfo (Lorg/jetbrains/kotlin/psi/KtExpression;)Lorg/jetbrains/kotlin/analysis/api/components/KaSmartCastInfo;
}

public final class org/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter : java/lang/Enum {
	public static final field EXTENDED_AND_COMMON_CHECKERS Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
	public static final field ONLY_COMMON_CHECKERS Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
	public static final field ONLY_EXPERIMENTAL_CHECKERS Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
	public static final field ONLY_EXTENDED_CHECKERS Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaDiagnosticProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun collectDiagnostics (Lorg/jetbrains/kotlin/psi/KtFile;Lorg/jetbrains/kotlin/analysis/api/components/KaDiagnosticCheckerFilter;)Ljava/util/Collection;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaEvaluator : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun evaluate (Lorg/jetbrains/kotlin/psi/KtExpression;)Lorg/jetbrains/kotlin/analysis/api/base/KaConstantValue;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaExpressionInformationProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun isUsedAsExpression (Lorg/jetbrains/kotlin/psi/KtExpression;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaExpressionTypeProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun getExpectedType (Lcom/intellij/psi/PsiElement;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getExpressionType (Lorg/jetbrains/kotlin/psi/KtExpression;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getFunctionType (Lorg/jetbrains/kotlin/psi/KtFunction;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public fun getReturnType (Lorg/jetbrains/kotlin/psi/KtDeclaration;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getReturnType (Lorg/jetbrains/kotlin/psi/KtDeclarationWithReturnType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun isDefinitelyNotNull (Lorg/jetbrains/kotlin/psi/KtExpression;)Z
	public abstract fun isDefinitelyNull (Lorg/jetbrains/kotlin/psi/KtExpression;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaImplicitReceiver : org/jetbrains/kotlin/analysis/api/components/KaScopeImplicitReceiverValue {
	public abstract fun getOwnerSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;
	public abstract fun getScopeIndexInTower ()I
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCast : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getKind ()Lorg/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind;
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public final class org/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind : java/lang/Enum {
	public static final field DISPATCH Lorg/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind;
	public static final field EXTENSION Lorg/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/components/KaImplicitReceiverSmartCastKind;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaJavaInteroperabilityComponent : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun getCallableSymbol (Lcom/intellij/psi/PsiMember;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
	public abstract fun getNamedClassSymbol (Lcom/intellij/psi/PsiClass;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaOriginalPsiProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun getOriginalDeclaration (Lorg/jetbrains/kotlin/psi/KtDeclaration;)Lorg/jetbrains/kotlin/psi/KtDeclaration;
	public abstract fun getOriginalKtFile (Lorg/jetbrains/kotlin/psi/KtFile;)Lorg/jetbrains/kotlin/psi/KtFile;
	public abstract fun recordOriginalDeclaration (Lorg/jetbrains/kotlin/psi/KtDeclaration;Lorg/jetbrains/kotlin/psi/KtDeclaration;)V
	public abstract fun recordOriginalKtFile (Lorg/jetbrains/kotlin/psi/KtFile;Lorg/jetbrains/kotlin/psi/KtFile;)V
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaResolver : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun isImplicitReferenceToCompanion (Lorg/jetbrains/kotlin/idea/references/KtReference;)Z
	public abstract fun resolveToCall (Lorg/jetbrains/kotlin/psi/KtElement;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;
	public abstract fun resolveToCallCandidates (Lorg/jetbrains/kotlin/psi/KtElement;)Ljava/util/List;
	public abstract fun resolveToSymbol (Lorg/jetbrains/kotlin/idea/references/KtReference;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;
	public abstract fun resolveToSymbols (Lorg/jetbrains/kotlin/idea/references/KtReference;)Ljava/util/Collection;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeContext : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public fun getImplicitReceivers ()Ljava/util/List;
	public abstract fun getScopes ()Ljava/util/List;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind {
	public abstract fun getIndexInTower ()I
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$DefaultSimpleImportingScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ImportingScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$DefaultStarImportingScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ImportingScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ExplicitSimpleImportingScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ImportingScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ExplicitStarImportingScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ImportingScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ImportingScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$LocalScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$PackageMemberScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$ScriptMemberScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$StaticMemberScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$TypeParameterScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind$NonLocalScope {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeKind$TypeScope : org/jetbrains/kotlin/analysis/api/components/KaScopeKind {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun asCompositeScope (Ljava/util/List;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public fun compositeScope (Lorg/jetbrains/kotlin/analysis/api/components/KaScopeContext;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public static synthetic fun compositeScope$default (Lorg/jetbrains/kotlin/analysis/api/components/KaScopeProvider;Lorg/jetbrains/kotlin/analysis/api/components/KaScopeContext;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getCombinedDeclaredMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public fun getCombinedMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getDeclaredMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getDelegatedMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getFileScope (Lorg/jetbrains/kotlin/analysis/api/symbols/KaFileSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getImportingScopeContext (Lorg/jetbrains/kotlin/psi/KtFile;)Lorg/jetbrains/kotlin/analysis/api/components/KaScopeContext;
	public abstract fun getMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getPackageScope (Lorg/jetbrains/kotlin/analysis/api/symbols/KaPackageSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getStaticDeclaredMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun getStaticMemberScope (Lorg/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol;)Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
	public abstract fun scopeContext (Lorg/jetbrains/kotlin/psi/KtFile;Lorg/jetbrains/kotlin/psi/KtElement;)Lorg/jetbrains/kotlin/analysis/api/components/KaScopeContext;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaScopeWithKind : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getKind ()Lorg/jetbrains/kotlin/analysis/api/components/KaScopeKind;
	public abstract fun getScope ()Lorg/jetbrains/kotlin/analysis/api/scopes/KaScope;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaSessionComponent : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaSmartCastInfo : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getSmartCastType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun isStable ()Z
}

public final class org/jetbrains/kotlin/analysis/api/components/KaStandardTypeClassIds {
	public static final field INSTANCE Lorg/jetbrains/kotlin/analysis/api/components/KaStandardTypeClassIds;
	public final fun getANY ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getBOOLEAN ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getBYTE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getCHAR ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getCHAR_SEQUENCE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getDOUBLE ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getFLOAT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getINT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getLONG ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getNOTHING ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getPRIMITIVES ()Ljava/util/Set;
	public final fun getSHORT ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getSTRING ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getUNIT ()Lorg/jetbrains/kotlin/name/ClassId;
}

public final class org/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy : java/lang/Enum {
	public static final field LENIENT Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;
	public static final field STRICT Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaSymbolRelationProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun getAllOverriddenSymbols (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Lkotlin/sequences/Sequence;
	public fun getConstructedClass (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSamConstructorSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;
	public abstract fun getContainingDeclaration (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol;
	public abstract fun getContainingFile (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaFileSymbol;
	public abstract fun getContainingModule (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;
	public abstract fun getContainingSymbol (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;
	public abstract fun getDirectlyOverriddenSymbols (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Lkotlin/sequences/Sequence;
	public abstract fun getFakeOverrideOriginal (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
	public abstract fun getFunctionalInterface (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSamConstructorSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;
	public abstract fun getIntersectionOverriddenSymbols (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Ljava/util/List;
	public abstract fun getSamConstructor (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSamConstructorSymbol;
	public abstract fun getSealedClassInheritors (Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol;)Ljava/util/List;
	public abstract fun isDirectSubClassOf (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;)Z
	public abstract fun isSubClassOf (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeBuilder : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeCreator : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun buildClassType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun buildClassType (Lorg/jetbrains/kotlin/name/ClassId;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public static synthetic fun buildClassType$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeCreator;Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public static synthetic fun buildClassType$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeCreator;Lorg/jetbrains/kotlin/name/ClassId;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun buildTypeParameterType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeParameterSymbol;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/analysis/api/types/KaTypeParameterType;
	public static synthetic fun buildTypeParameterType$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeCreator;Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeParameterSymbol;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/jetbrains/kotlin/analysis/api/types/KaTypeParameterType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeInformationProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public fun getCanBeNull (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun getExpandedSymbol (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;
	public abstract fun getFullyExpandedType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getHasFlexibleNullability (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isAnyType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public abstract fun isArrayOrPrimitiveArray (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isBooleanType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isByteType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isCharSequenceType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isCharType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isClassType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/name/ClassId;)Z
	public abstract fun isDenotable (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isDoubleType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isFloatType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isFunctionType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public abstract fun isFunctionalInterface (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isIntType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isKFunctionType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isKSuspendFunctionType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isLongType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public abstract fun isMarkedNullable (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public abstract fun isNestedArray (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isNothingType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public abstract fun isNullable (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isPrimitive (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isShortType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isStringType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isSuspendFunctionType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isUByteType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isUIntType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isULongType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isUShortType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun isUnitType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeParameterTypeBuilder : org/jetbrains/kotlin/analysis/api/components/KaTypeBuilder {
	public abstract fun getNullability ()Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public abstract fun isMarkedNullable ()Z
	public abstract fun setMarkedNullable (Z)V
	public abstract fun setNullability (Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;)V
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun allSupertypes (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Z)Lkotlin/sequences/Sequence;
	public abstract fun collectImplicitReceiverTypes (Lorg/jetbrains/kotlin/psi/KtElement;)Ljava/util/List;
	public abstract fun directSupertypes (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Z)Lkotlin/sequences/Sequence;
	public fun getAllSupertypes (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lkotlin/sequences/Sequence;
	public abstract fun getArrayElementType (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getBuiltinTypes ()Lorg/jetbrains/kotlin/analysis/api/components/KaBuiltinTypes;
	public abstract fun getCommonSupertype (Ljava/lang/Iterable;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public fun getCommonSupertype ([Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getDefaultType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public synthetic fun getDefaultType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public fun getDirectSupertypes (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lkotlin/sequences/Sequence;
	public abstract fun getDispatchReceiverType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getReceiverType (Lorg/jetbrains/kotlin/psi/KtDoubleColonExpression;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getType (Lorg/jetbrains/kotlin/psi/KtTypeReference;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun hasCommonSubtypeWith (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Z
	public fun lowerBoundIfFlexible (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public fun upperBoundIfFlexible (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public fun withNullability (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun withNullability (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Z)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun isSubtypeOf (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;)Z
	public abstract fun isSubtypeOf (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;)Z
	public abstract fun isSubtypeOf (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/name/ClassId;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;)Z
	public static synthetic fun isSubtypeOf$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;ILjava/lang/Object;)Z
	public static synthetic fun isSubtypeOf$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;ILjava/lang/Object;)Z
	public static synthetic fun isSubtypeOf$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/name/ClassId;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;ILjava/lang/Object;)Z
	public abstract fun semanticallyEquals (Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;)Z
	public static synthetic fun semanticallyEquals$default (Lorg/jetbrains/kotlin/analysis/api/components/KaTypeRelationChecker;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/types/KaType;Lorg/jetbrains/kotlin/analysis/api/components/KaSubtypingErrorTypePolicy;ILjava/lang/Object;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/components/KaVisibilityChecker : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun isPublicApi (Lorg/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnostic : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getDefaultMessage ()Ljava/lang/String;
	public abstract fun getDiagnosticClass ()Lkotlin/reflect/KClass;
	public abstract fun getFactoryName ()Ljava/lang/String;
	public abstract fun getSeverity ()Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
}

public final class org/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnosticKt {
	public static final fun getDefaultMessageWithFactoryName (Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnostic;)Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnosticWithPsi : org/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnostic {
	public abstract fun getDiagnosticClass ()Lkotlin/reflect/KClass;
	public abstract fun getPsi ()Lcom/intellij/psi/PsiElement;
	public abstract fun getTextRanges ()Ljava/util/Collection;
}

public final class org/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity : java/lang/Enum {
	public static final field ERROR Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
	public static final field INFO Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
	public static final field WARNING Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaSeverity;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getToken ()Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeToken;
}

public final class org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwnerField : kotlin/properties/ReadOnlyProperty {
	public static final synthetic fun box-impl (Ljava/lang/Object;)Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwnerField;
	public static fun constructor-impl (Ljava/lang/Object;)Ljava/lang/Object;
	public fun equals (Ljava/lang/Object;)Z
	public static fun equals-impl (Ljava/lang/Object;Ljava/lang/Object;)Z
	public static final fun equals-impl0 (Ljava/lang/Object;Ljava/lang/Object;)Z
	public final fun getValue ()Ljava/lang/Object;
	public synthetic fun getValue (Ljava/lang/Object;Lkotlin/reflect/KProperty;)Ljava/lang/Object;
	public fun getValue (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;Lkotlin/reflect/KProperty;)Ljava/lang/Object;
	public static fun getValue-impl (Ljava/lang/Object;Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;Lkotlin/reflect/KProperty;)Ljava/lang/Object;
	public fun hashCode ()I
	public static fun hashCode-impl (Ljava/lang/Object;)I
	public fun toString ()Ljava/lang/String;
	public static fun toString-impl (Ljava/lang/Object;)Ljava/lang/String;
	public final synthetic fun unbox-impl ()Ljava/lang/Object;
}

public final class org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwnerKt {
	public static final fun assertIsValidAndAccessible (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;)V
	public static final fun isValid (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;)Z
	public static final fun validityAsserted (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;Ljava/lang/Object;)Ljava/lang/Object;
	public static final fun withValidityAssertion (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
}

public abstract class org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeToken {
	public fun <init> ()V
	public abstract fun getInaccessibilityReason ()Ljava/lang/String;
	public abstract fun getInvalidationReason ()Ljava/lang/String;
	public abstract fun isAccessible ()Z
	public abstract fun isValid ()Z
}

public final class org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeTokenKt {
	public static final fun assertIsAccessible (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeToken;)V
	public static final fun assertIsValid (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeToken;)V
	public static final fun assertIsValidAndAccessible (Lorg/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeToken;)V
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/permissions/KaAllowAnalysisFromWriteAction : java/lang/annotation/Annotation {
}

public abstract interface annotation class org/jetbrains/kotlin/analysis/api/permissions/KaAllowAnalysisOnEdt : java/lang/annotation/Annotation {
}

public final class org/jetbrains/kotlin/analysis/api/permissions/PermissionsKt {
	public static final fun allowAnalysisFromWriteAction (Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
	public static final fun allowAnalysisOnEdt (Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
	public static final fun forbidAnalysis (Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
}

public final class org/jetbrains/kotlin/analysis/api/projectStructure/DanglingFilesKt {
	public static final fun getDanglingFileResolutionMode (Lorg/jetbrains/kotlin/psi/KtFile;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;
	public static final fun isDangling (Lorg/jetbrains/kotlin/psi/KtFile;)Z
}

public final class org/jetbrains/kotlin/analysis/api/projectStructure/DependenciesKt {
	public static final fun allDirectDependencies (Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;)Lkotlin/sequences/Sequence;
}

public final class org/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode : java/lang/Enum {
	public static final field IGNORE_SELF Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;
	public static final field PREFER_SELF Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileResolutionMode;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/projectStructure/KaLibraryModule : org/jetbrains/kotlin/analysis/api/projectStructure/KaModule {
	public abstract fun getBinaryRoots ()Ljava/util/Collection;
	public abstract fun getLibraryName ()Ljava/lang/String;
	public abstract fun getLibrarySources ()Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaLibrarySourceModule;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/projectStructure/KaLibrarySourceModule : org/jetbrains/kotlin/analysis/api/projectStructure/KaModule {
	public abstract fun getBinaryLibrary ()Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaLibraryModule;
	public abstract fun getLibraryName ()Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/projectStructure/KaModule {
	public abstract fun getContentScope ()Lcom/intellij/psi/search/GlobalSearchScope;
	public abstract fun getDirectDependsOnDependencies ()Ljava/util/List;
	public abstract fun getDirectFriendDependencies ()Ljava/util/List;
	public abstract fun getDirectRegularDependencies ()Ljava/util/List;
	public abstract fun getProject ()Lcom/intellij/openapi/project/Project;
	public abstract fun getTargetPlatform ()Lorg/jetbrains/kotlin/platform/TargetPlatform;
	public abstract fun getTransitiveDependsOnDependencies ()Ljava/util/List;
}

public final class org/jetbrains/kotlin/analysis/api/projectStructure/KaModuleKt {
	public static final fun isStable (Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaDanglingFileModule;)Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/projectStructure/KaModuleProvider {
	public static final field Companion Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModuleProvider$Companion;
	public abstract fun getModule (Lcom/intellij/psi/PsiElement;Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;
}

public final class org/jetbrains/kotlin/analysis/api/projectStructure/KaModuleProvider$Companion {
	public final fun getInstance (Lcom/intellij/openapi/project/Project;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModuleProvider;
	public final fun getModule (Lcom/intellij/openapi/project/Project;Lcom/intellij/psi/PsiElement;Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;)Lorg/jetbrains/kotlin/analysis/api/projectStructure/KaModule;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/projectStructure/KaSourceModule : org/jetbrains/kotlin/analysis/api/projectStructure/KaModule {
	public abstract fun getLanguageVersionSettings ()Lorg/jetbrains/kotlin/config/LanguageVersionSettings;
	public abstract fun getName ()Ljava/lang/String;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaAnnotationCall : org/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaApplicableCallCandidateInfo : org/jetbrains/kotlin/analysis/api/resolution/KaCallCandidateInfo {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCall : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCallCandidateInfo : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getCandidate ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaCall;
	public abstract fun isInBestCandidates ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCallInfo : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
}

public final class org/jetbrains/kotlin/analysis/api/resolution/KaCallInfoKt {
	public static final fun getCalls (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Ljava/util/List;
	public static final fun singleConstructorCallOrNull (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public static final fun singleFunctionCallOrNull (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public static final fun singleVariableAccessCall (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall;
	public static final fun successfulConstructorCallOrNull (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public static final fun successfulFunctionCallOrNull (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public static final fun successfulVariableAccessCall (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallInfo;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall;
}

public final class org/jetbrains/kotlin/analysis/api/resolution/KaCallKt {
	public static final fun getSymbol (Lorg/jetbrains/kotlin/analysis/api/resolution/KaCallableMemberCall;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCallableMemberCall : org/jetbrains/kotlin/analysis/api/resolution/KaCall {
	public abstract fun getPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
	public abstract fun getTypeArgumentsMapping ()Ljava/util/Map;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCompoundAccessCall {
	public abstract fun getCompoundOperation ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaCompoundOperation;
	public fun getOperationCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCompoundArrayAccessCall : org/jetbrains/kotlin/analysis/api/resolution/KaCall, org/jetbrains/kotlin/analysis/api/resolution/KaCompoundAccessCall, org/jetbrains/kotlin/analysis/api/resolution/KaMultiCall {
	public abstract fun getGetPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
	public abstract fun getGetterCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public abstract fun getIndexArguments ()Ljava/util/List;
	public abstract fun getSetPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
	public abstract fun getSetterCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCompoundOperation : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getOperationCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall;
	public abstract fun getOperationPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaCompoundVariableAccessCall : org/jetbrains/kotlin/analysis/api/resolution/KaCall, org/jetbrains/kotlin/analysis/api/resolution/KaCompoundAccessCall, org/jetbrains/kotlin/analysis/api/resolution/KaMultiCall {
	public abstract fun getVariableCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall;
	public abstract fun getVariablePartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall : org/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall {
	public abstract fun getKind ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind;
}

public final class org/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind : java/lang/Enum {
	public static final field SUPER_CALL Lorg/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind;
	public static final field THIS_CALL Lorg/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/resolution/KaDelegatedConstructorCall$Kind;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaErrorCallInfo : org/jetbrains/kotlin/analysis/api/resolution/KaCallInfo {
	public abstract fun getCandidateCalls ()Ljava/util/List;
	public abstract fun getDiagnostic ()Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnostic;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaExplicitReceiverValue : org/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue {
	public abstract fun getExpression ()Lorg/jetbrains/kotlin/psi/KtExpression;
	public abstract fun isSafeNavigation ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall : org/jetbrains/kotlin/analysis/api/resolution/KaCallableMemberCall, org/jetbrains/kotlin/analysis/api/resolution/KaSingleCall {
	public fun getArgumentMapping ()Ljava/util/Map;
	public abstract fun getCombinedArgumentMapping ()Ljava/util/Map;
	public abstract fun getPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
	public abstract fun getValueArgumentMapping ()Ljava/util/Map;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaImplicitInvokeCall : org/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaImplicitReceiverValue : org/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue {
	public abstract fun getSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaInapplicableCallCandidateInfo : org/jetbrains/kotlin/analysis/api/resolution/KaCallCandidateInfo {
	public abstract fun getDiagnostic ()Lorg/jetbrains/kotlin/analysis/api/diagnostics/KaDiagnostic;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getDispatchReceiver ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue;
	public abstract fun getExtensionReceiver ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue;
	public abstract fun getSignature ()Lorg/jetbrains/kotlin/analysis/api/signatures/KaCallableSignature;
}

public final class org/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbolKt {
	public static final fun getSymbol (Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSimpleFunctionCall : org/jetbrains/kotlin/analysis/api/resolution/KaFunctionCall {
	public abstract fun isImplicitInvoke ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess$Read : org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess$Write : org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess {
	public abstract fun getValue ()Lorg/jetbrains/kotlin/psi/KtExpression;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccessCall : org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall {
	public abstract fun getSimpleAccess ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaSimpleVariableAccess;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSmartCastedReceiverValue : org/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue {
	public abstract fun getOriginal ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaReceiverValue;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaSuccessCallInfo : org/jetbrains/kotlin/analysis/api/resolution/KaCallInfo {
	public abstract fun getCall ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaCall;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall : org/jetbrains/kotlin/analysis/api/resolution/KaCallableMemberCall, org/jetbrains/kotlin/analysis/api/resolution/KaSingleCall {
	public abstract fun getKind ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind;
	public abstract fun getPartiallyAppliedSymbol ()Lorg/jetbrains/kotlin/analysis/api/resolution/KaPartiallyAppliedSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind$Read : org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind {
}

public abstract interface class org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind$Write : org/jetbrains/kotlin/analysis/api/resolution/KaVariableAccessCall$Kind {
	public abstract fun getValue ()Lorg/jetbrains/kotlin/psi/KtExpression;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/scopes/KaScope : org/jetbrains/kotlin/analysis/api/scopes/KaScopeLike {
	public abstract fun callables (Ljava/util/Collection;)Lkotlin/sequences/Sequence;
	public abstract fun callables (Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
	public fun callables ([Lorg/jetbrains/kotlin/name/Name;)Lkotlin/sequences/Sequence;
	public abstract fun classifiers (Ljava/util/Collection;)Lkotlin/sequences/Sequence;
	public abstract fun classifiers (Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
	public fun classifiers ([Lorg/jetbrains/kotlin/name/Name;)Lkotlin/sequences/Sequence;
	public fun getCallables ()Lkotlin/sequences/Sequence;
	public fun getClassifiers ()Lkotlin/sequences/Sequence;
	public abstract fun getConstructors ()Lkotlin/sequences/Sequence;
	public fun getDeclarations ()Lkotlin/sequences/Sequence;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/signatures/KaCallableSignature : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun equals (Ljava/lang/Object;)Z
	public fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public abstract fun getReceiverType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getReturnType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
	public abstract fun hashCode ()I
}

public abstract interface class org/jetbrains/kotlin/analysis/api/signatures/KaFunctionSignature : org/jetbrains/kotlin/analysis/api/signatures/KaCallableSignature {
	public abstract fun getValueParameters ()Ljava/util/List;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/signatures/KaVariableSignature : org/jetbrains/kotlin/analysis/api/signatures/KaCallableSignature {
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/AdditionalKDocResolutionProvider {
	public static final field Companion Lorg/jetbrains/kotlin/analysis/api/symbols/AdditionalKDocResolutionProvider$Companion;
	public abstract fun resolveKdocFqName (Lorg/jetbrains/kotlin/analysis/api/KaSession;Lorg/jetbrains/kotlin/name/FqName;Lorg/jetbrains/kotlin/psi/KtElement;)Ljava/util/Collection;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/AdditionalKDocResolutionProvider$Companion {
	public final fun getEP_NAME ()Lcom/intellij/openapi/extensions/ExtensionPointName;
	public final fun resolveKdocFqName (Lorg/jetbrains/kotlin/analysis/api/KaSession;Lorg/jetbrains/kotlin/name/FqName;Lorg/jetbrains/kotlin/psi/KtElement;)Ljava/util/Collection;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/KaAdditionalKDocResolutionProvider {
	public abstract fun resolveKdocFqName (Lorg/jetbrains/kotlin/analysis/api/KaSession;Lorg/jetbrains/kotlin/name/FqName;Lorg/jetbrains/kotlin/psi/KtElement;)Ljava/util/Collection;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaAnonymousFunctionSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaContextParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public final fun getHasStableParameterNames ()Z
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaAnonymousObjectSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getClassId ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getClassKind ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaBackingFieldSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public fun getOrigin ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public abstract fun getOwningProperty ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaKotlinPropertySymbol;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExtension ()Z
	public final fun isExternal ()Z
	public abstract fun isNotDefault ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol : org/jetbrains/kotlin/analysis/api/base/KaContextReceiversOwner, org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public abstract fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public abstract fun getReturnType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun isExtension ()Z
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbolKt {
	public static final fun getReceiverType (Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaClassInitializerSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaClassKind : java/lang/Enum {
	public static final field ANNOTATION_CLASS Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field ANONYMOUS_OBJECT Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field CLASS Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field COMPANION_OBJECT Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field ENUM_CLASS Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field INTERFACE Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static final field OBJECT Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public final fun isClass ()Z
	public final fun isObject ()Z
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getClassId ()Lorg/jetbrains/kotlin/name/ClassId;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbolKt {
	public static final fun getNameOrAnonymous (Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol;)Lorg/jetbrains/kotlin/name/Name;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getClassKind ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassKind;
	public abstract fun getSuperTypes ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaConstructorSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public abstract fun getContainingClassId ()Lorg/jetbrains/kotlin/name/ClassId;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isExtension ()Z
	public abstract fun isPrimary ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaAnnotatedSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public fun getVisibility ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public abstract fun isActual ()Z
	public abstract fun isExpect ()Z
	public abstract fun isExternal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaDestructuringDeclarationSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getEntries ()Ljava/util/List;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/KaEnumEntryInitializerSymbol : org/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaEnumEntrySymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getEnumEntryInitializer ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaEnumEntryInitializerSymbol;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isActual ()Z
	public final fun isExtension ()Z
	public final fun isVal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaFileSymbol : org/jetbrains/kotlin/analysis/api/symbols/markers/KaAnnotatedSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getHasStableParameterNames ()Z
	public abstract fun getValueParameters ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaJavaFieldSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExtension ()Z
	public final fun isExternal ()Z
	public abstract fun isStatic ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaKotlinPropertySymbol : org/jetbrains/kotlin/analysis/api/symbols/KaPropertySymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaContextParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun isConst ()Z
	public abstract fun isLateInit ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaLocalVariableSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExtension ()Z
	public final fun isExternal ()Z
	public abstract fun isLateInit ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol, org/jetbrains/kotlin/analysis/api/base/KaContextReceiversOwner, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getCompanionObject ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol;
	public abstract fun isData ()Z
	public abstract fun isFun ()Z
	public abstract fun isInline ()Z
	public abstract fun isInner ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaNamedFunctionSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaContextParameterOwnerSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun isBuiltinFunctionInvoke ()Z
	public abstract fun isInfix ()Z
	public abstract fun isInline ()Z
	public abstract fun isOperator ()Z
	public abstract fun isOverride ()Z
	public abstract fun isStatic ()Z
	public abstract fun isSuspend ()Z
	public abstract fun isTailRec ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaPackageSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getFqName ()Lorg/jetbrains/kotlin/name/FqName;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaParameterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getCallableId ()Lorg/jetbrains/kotlin/name/CallableId;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExtension ()Z
	public final fun isExternal ()Z
	public final fun isVal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaPropertyAccessorSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getHasBody ()Z
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun isActual ()Z
	public abstract fun isDefault ()Z
	public fun isExpect ()Z
	public fun isExtension ()Z
	public abstract fun isInline ()Z
	public abstract fun isNotDefault ()Z
	public abstract fun isOverride ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaPropertyGetterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaPropertyAccessorSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getHasStableParameterNames ()Z
	public final fun getValueParameters ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaPropertySetterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaPropertyAccessorSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaValueParameterSymbol;
	public final fun getValueParameters ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaPropertySymbol : org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getBackingFieldSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaBackingFieldSymbol;
	public abstract fun getGetter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaPropertyGetterSymbol;
	public abstract fun getHasBackingField ()Z
	public abstract fun getHasGetter ()Z
	public abstract fun getHasSetter ()Z
	public abstract fun getSetter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaPropertySetterSymbol;
	public abstract fun isDelegatedProperty ()Z
	public abstract fun isFromPrimaryConstructor ()Z
	public abstract fun isOverride ()Z
	public abstract fun isStatic ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaParameterSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public abstract fun getOwningCallableSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaSamConstructorSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getReceiverParameter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaReceiverParameterSymbol;
	public final fun isExternal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaScriptSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/KaSymbol : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public abstract fun getOrigin ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public abstract fun getPsi ()Lcom/intellij/psi/PsiElement;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolKt {
	public static final fun getName (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Lorg/jetbrains/kotlin/name/Name;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation : java/lang/Enum {
	public static final field CLASS Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public static final field LOCAL Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public static final field PROPERTY Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public static final field TOP_LEVEL Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocationKt {
	public static final fun isLocal (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Z
	public static final fun isTopLevel (Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbol;)Z
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality : java/lang/Enum {
	public static final field ABSTRACT Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public static final field FINAL Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public static final field OPEN Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public static final field SEALED Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin : java/lang/Enum {
	public static final field DELEGATED Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field INTERSECTION_OVERRIDE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field JAVA_LIBRARY Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field JAVA_SOURCE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field JAVA_SYNTHETIC_PROPERTY Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field JS_DYNAMIC Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field LIBRARY Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field NATIVE_FORWARD_DECLARATION Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field PLUGIN Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field PROPERTY_BACKING_FIELD Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field SAM_CONSTRUCTOR Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field SOURCE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field SOURCE_MEMBER_GENERATED Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field SUBSTITUTION_OVERRIDE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static final field TYPEALIASED_CONSTRUCTOR Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolProvider : org/jetbrains/kotlin/analysis/api/components/KaSessionComponent {
	public abstract fun findClass (Lorg/jetbrains/kotlin/name/ClassId;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;
	public abstract fun findClassLike (Lorg/jetbrains/kotlin/name/ClassId;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;
	public abstract fun findPackage (Lorg/jetbrains/kotlin/name/FqName;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaPackageSymbol;
	public abstract fun findTopLevelCallables (Lorg/jetbrains/kotlin/name/FqName;Lorg/jetbrains/kotlin/name/Name;)Lkotlin/sequences/Sequence;
	public abstract fun findTypeAlias (Lorg/jetbrains/kotlin/name/ClassId;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeAliasSymbol;
	public abstract fun getClassSymbol (Lorg/jetbrains/kotlin/psi/KtClassOrObject;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;
	public abstract fun getNamedClassSymbol (Lorg/jetbrains/kotlin/psi/KtClassOrObject;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedClassSymbol;
	public abstract fun getRootPackageSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaPackageSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtBackingField;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaBackingFieldSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtClassInitializer;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassInitializerSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtConstructor;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaConstructorSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtDeclaration;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaDeclarationSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtDestructuringDeclaration;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaDestructuringDeclarationSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtDestructuringDeclarationEntry;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtEnumEntry;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaEnumEntrySymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtFile;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaFileSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtFunctionLiteral;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaAnonymousFunctionSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtNamedFunction;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaFunctionSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtObjectDeclaration;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtObjectLiteralExpression;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaAnonymousObjectSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtParameter;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtProperty;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtPropertyAccessor;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaPropertyAccessorSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtScript;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaScriptSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtTypeAlias;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeAliasSymbol;
	public abstract fun getSymbol (Lorg/jetbrains/kotlin/psi/KtTypeParameter;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeParameterSymbol;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility : java/lang/Enum {
	public static final field INTERNAL Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field LOCAL Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field PACKAGE_PRIVATE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field PACKAGE_PROTECTED Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field PRIVATE Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field PROTECTED Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field PUBLIC Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static final field UNKNOWN Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolVisibility;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaSyntheticJavaPropertySymbol : org/jetbrains/kotlin/analysis/api/symbols/KaPropertySymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getBackingFieldSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaBackingFieldSymbol;
	public abstract fun getGetter ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaPropertyGetterSymbol;
	public final fun getHasBackingField ()Z
	public final fun getHasGetter ()Z
	public abstract fun getJavaGetterSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedFunctionSymbol;
	public abstract fun getJavaSetterSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaNamedFunctionSymbol;
	public final fun getLocation ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolLocation;
	public fun getOrigin ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolOrigin;
	public final fun isDelegatedProperty ()Z
	public final fun isFromPrimaryConstructor ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaTypeAliasSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaTypeParameterOwnerSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getExpandedType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public final fun isExternal ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaTypeParameterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public final fun getModality ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaSymbolModality;
	public abstract fun getUpperBounds ()Ljava/util/List;
	public abstract fun getVariance ()Lorg/jetbrains/kotlin/types/Variance;
	public final fun isActual ()Z
	public final fun isExpect ()Z
	public final fun isExternal ()Z
	public abstract fun isReified ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaValueParameterSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaParameterSymbol {
	public fun <init> ()V
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public fun getGeneratedPrimaryConstructorProperty ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaKotlinPropertySymbol;
	public abstract fun getHasDefaultValue ()Z
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public abstract fun isCrossinline ()Z
	public abstract fun isImplicitLambdaParameter ()Z
	public abstract fun isNoinline ()Z
	public abstract fun isVararg ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/KaVariableSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaCallableSymbol, org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun isVal ()Z
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/markers/KaAnnotatedSymbol : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotated, org/jetbrains/kotlin/analysis/api/symbols/KaSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/markers/KaDeclarationContainerSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/symbols/markers/KaNamedSymbol : org/jetbrains/kotlin/analysis/api/symbols/KaSymbol {
	public abstract fun createPointer ()Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
}

public abstract class org/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer {
	public fun <init> ()V
	public fun pointsToTheSameSymbolAs (Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;)Z
	public fun toString ()Ljava/lang/String;
}

public final class org/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointerKt {
	public static final fun symbolPointer (Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
	public static final fun symbolPointerDelegator (Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;Lkotlin/jvm/functions/Function2;)Lorg/jetbrains/kotlin/analysis/api/symbols/pointers/KaSymbolPointer;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaCapturedType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
	public abstract fun getProjection ()Lorg/jetbrains/kotlin/analysis/api/types/KaTypeProjection;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaClassErrorType : org/jetbrains/kotlin/analysis/api/types/KaErrorType {
	public fun <init> ()V
	public abstract fun getCandidateSymbols ()Ljava/util/Collection;
	public abstract fun getQualifiers ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaClassType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public abstract fun getClassId ()Lorg/jetbrains/kotlin/name/ClassId;
	public abstract fun getQualifiers ()Ljava/util/List;
	public abstract fun getSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;
	public abstract fun getTypeArguments ()Ljava/util/List;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaClassTypeQualifier : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public abstract fun getTypeArguments ()Ljava/util/List;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaDefinitelyNotNullType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
	public final fun getNullability ()Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public abstract fun getOriginal ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaDynamicType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaErrorType : org/jetbrains/kotlin/analysis/api/types/KaType {
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaFlexibleType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
	public abstract fun getLowerBound ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getUpperBound ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaFunctionType : org/jetbrains/kotlin/analysis/api/types/KaClassType, org/jetbrains/kotlin/analysis/api/base/KaContextReceiversOwner {
	public fun <init> ()V
	public abstract fun getArity ()I
	public abstract fun getHasReceiver ()Z
	public abstract fun getParameterTypes ()Ljava/util/List;
	public abstract fun getReceiverType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getReturnType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun isReflectType ()Z
	public abstract fun isSuspend ()Z
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaIntersectionType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
	public abstract fun getConjuncts ()Ljava/util/List;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaResolvedClassTypeQualifier : org/jetbrains/kotlin/analysis/api/types/KaClassTypeQualifier {
	public abstract fun getSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassifierSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaStarTypeProjection : org/jetbrains/kotlin/analysis/api/types/KaTypeProjection {
	public fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaType : org/jetbrains/kotlin/analysis/api/annotations/KaAnnotated, org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getAbbreviation ()Lorg/jetbrains/kotlin/analysis/api/types/KaUsualClassType;
	public abstract fun getNullability ()Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaTypeArgumentWithVariance : org/jetbrains/kotlin/analysis/api/types/KaTypeProjection {
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public abstract fun getVariance ()Lorg/jetbrains/kotlin/types/Variance;
}

public final class org/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode : java/lang/Enum {
	public static final field DEFAULT Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field DEFAULT_UAST Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field FUNCTION_RETURN_TYPE Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field GENERIC_ARGUMENT Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field RETURN_TYPE Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field RETURN_TYPE_BOXED Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field SUPER_TYPE Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field SUPER_TYPE_KOTLIN_COLLECTIONS_AS_IS Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field VALUE_PARAMETER Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static final field VALUE_PARAMETER_BOXED Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/types/KaTypeMappingMode;
}

public final class org/jetbrains/kotlin/analysis/api/types/KaTypeNullability : java/lang/Enum {
	public static final field Companion Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability$Companion;
	public static final field NON_NULLABLE Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public static final field NULLABLE Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public static final field UNKNOWN Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public static fun getEntries ()Lkotlin/enums/EnumEntries;
	public final fun isNullable ()Z
	public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
	public static fun values ()[Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
}

public final class org/jetbrains/kotlin/analysis/api/types/KaTypeNullability$Companion {
	public final fun create (Z)Lorg/jetbrains/kotlin/analysis/api/types/KaTypeNullability;
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaTypeParameterType : org/jetbrains/kotlin/analysis/api/types/KaType {
	public fun <init> ()V
	public abstract fun getName ()Lorg/jetbrains/kotlin/name/Name;
	public abstract fun getSymbol ()Lorg/jetbrains/kotlin/analysis/api/symbols/KaTypeParameterSymbol;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaTypeProjection : org/jetbrains/kotlin/analysis/api/lifetime/KaLifetimeOwner {
	public abstract fun getType ()Lorg/jetbrains/kotlin/analysis/api/types/KaType;
}

public abstract interface class org/jetbrains/kotlin/analysis/api/types/KaUnresolvedClassTypeQualifier : org/jetbrains/kotlin/analysis/api/types/KaClassTypeQualifier {
}

public abstract class org/jetbrains/kotlin/analysis/api/types/KaUsualClassType : org/jetbrains/kotlin/analysis/api/types/KaClassType {
	public fun <init> ()V
}

public final class org/jetbrains/kotlin/analysis/api/types/TypeUtilsKt {
	public static final fun getAbbreviationOrSelf (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/types/KaType;
	public static final fun getSymbol (Lorg/jetbrains/kotlin/analysis/api/types/KaType;)Lorg/jetbrains/kotlin/analysis/api/symbols/KaClassLikeSymbol;
}

