@NotNull private static InnerModifierCheckResult checkIllegalInner( @NotNull DeclarationDescriptor descriptor) { if (!(descriptor instanceof ClassDescriptor)) return InnerModifierCheckResult.ILLEGAL_POSITION; ClassDescriptor classDescriptor = (ClassDescriptor) descriptor; if (classDescriptor.getKind() != ClassKind.CLASS) return InnerModifierCheckResult.ILLEGAL_POSITION; DeclarationDescriptor containingDeclaration = classDescriptor.getContainingDeclaration(); if (!(containingDeclaration instanceof ClassDescriptor)) return InnerModifierCheckResult.ILLEGAL_POSITION; if (DescriptorUtils.isTrait(containingDeclaration)) { return InnerModifierCheckResult.IN_TRAIT; } else if (DescriptorUtils.isObject(containingDeclaration)) { return InnerModifierCheckResult.IN_OBJECT; } else { return InnerModifierCheckResult.ALLOWED; } }