[fleet] Rebase to 2.1
diff --git a/.idea/inspectionProfiles/idea_default.xml b/.idea/inspectionProfiles/idea_default.xml
index bbc7abd..2624e11 100644
--- a/.idea/inspectionProfiles/idea_default.xml
+++ b/.idea/inspectionProfiles/idea_default.xml
@@ -21,15 +21,12 @@
       <scope name="runtime.classes" level="WARNING" enabled="true" />
     </inspection_tool>
     <inspection_tool class="BooleanMethodIsAlwaysInverted" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="BusyWait" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="CastConflictsWithInstanceof" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="CastToIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ChainedEquality" enabled="false" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ClassNameSameAsAncestorName" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="CloneCallsSuperClone" enabled="false" level="WARNING" enabled_by_default="false" />
     <inspection_tool class="CloneDeclaresCloneNotSupported" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="ComparisonOfShortAndChar" enabled="true" level="WARNING" enabled_by_default="true" />
-    <inspection_tool class="ConditionalExpressionWithIdenticalBranches" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ConfusingOctalEscape" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ConstantConditionalExpression" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="IDEA Test Sources" level="WARNING" enabled="false" />
@@ -45,9 +42,20 @@
     <inspection_tool class="ConstantIfStatement" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="IDEA Test Sources" level="WARNING" enabled="false" />
     </inspection_tool>
+    <inspection_tool class="ConstantValue" enabled="true" level="WARNING" enabled_by_default="true">
+      <scope name="runtime.classes" level="WARNING" enabled="false" />
+    </inspection_tool>
     <inspection_tool class="ContinueOrBreakFromFinallyBlock" enabled="false" level="WARNING" enabled_by_default="false" />
     <inspection_tool class="CovariantCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="CovariantEquals" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="DataFlowIssue" enabled="true" level="WARNING" enabled_by_default="true">
+      <scope name="runtime.classes" level="WARNING" enabled="false">
+        <option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false" />
+        <option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" />
+      </scope>
+      <option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false" />
+      <option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" />
+    </inspection_tool>
     <inspection_tool class="DeclareCollectionAsInterface" enabled="true" level="WEAK WARNING" enabled_by_default="true">
       <option name="ignoreLocalVariables" value="false" />
       <option name="ignorePrivateMethodsAndFields" value="false" />
@@ -58,7 +66,6 @@
     <inspection_tool class="EmptyStatementBody" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="m_reportEmptyBlocks" value="false" />
     </inspection_tool>
-    <inspection_tool class="EmptySynchronizedStatement" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="EnumSwitchStatementWhichMissesCases" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ignoreSwitchStatementsWithDefault" value="true" />
     </inspection_tool>
@@ -66,12 +73,10 @@
     <inspection_tool class="FieldAccessedSynchronizedAndUnsynchronized" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="countGettersAndSetters" value="false" />
     </inspection_tool>
-    <inspection_tool class="FieldMayBeFinal" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="FieldMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="Finalize" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ignoreTrivialFinalizers" value="true" />
     </inspection_tool>
-    <inspection_tool class="FinalizeNotProtected" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ForLoopReplaceableByWhile" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="m_ignoreLoopsWithoutConditions" value="false" />
     </inspection_tool>
@@ -105,7 +110,9 @@
         </list>
       </option>
     </inspection_tool>
-    <inspection_tool class="InnerClassMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="IncorrectFormatting" enabled="true" level="WEAK WARNING" enabled_by_default="true">
+      <option name="kotlinOnly" value="true" />
+    </inspection_tool>
     <inspection_tool class="InstanceofCatchParameter" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="InstanceofIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="JUnitTestClassNamingConvention" enabled="true" level="WARNING" enabled_by_default="true">
@@ -237,6 +244,13 @@
       <option name="IGNORE_POINT_TO_ITSELF" value="false" />
       <option name="myAdditionalJavadocTags" value="" />
     </inspection_tool>
+    <inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="false">
+      <scope name="IDEA Test Sources" level="WARNING" enabled="false" />
+      <scope name="idea openapi" level="WARNING" enabled="true">
+        <option name="IGNORE_DEPRECATED_ELEMENTS" value="true" />
+      </scope>
+      <scope name="runtime.classes" level="WARNING" enabled="true" />
+    </inspection_tool>
     <inspection_tool class="JavadocReference" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="IDEA Test Sources" level="ERROR" enabled="false" />
       <scope name="idea openapi" level="WARNING" enabled="true" />
@@ -251,14 +265,143 @@
     <inspection_tool class="MethodOverloadsParentMethod" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MethodOverridesPrivateMethod" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MethodOverridesStaticMethod" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="MissingJavadoc" enabled="true" level="WARNING" enabled_by_default="false">
+      <scope name="IDEA Test Sources" level="WARNING" enabled="false">
+        <option name="PACKAGE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="MODULE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="TOP_LEVEL_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="INNER_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="METHOD_SETTINGS">
+          <Options>
+            <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="FIELD_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+      </scope>
+      <scope name="idea openapi" level="WARNING" enabled="true">
+        <option name="IGNORE_DEPRECATED_ELEMENTS" value="true" />
+        <option name="PACKAGE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="MODULE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="TOP_LEVEL_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="INNER_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="METHOD_SETTINGS">
+          <Options>
+            <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="FIELD_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+      </scope>
+      <scope name="runtime.classes" level="WARNING" enabled="true">
+        <option name="PACKAGE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="MODULE_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="TOP_LEVEL_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="INNER_CLASS_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="METHOD_SETTINGS">
+          <Options>
+            <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+        <option name="FIELD_SETTINGS">
+          <Options>
+            <option name="ENABLED" value="false" />
+          </Options>
+        </option>
+      </scope>
+      <option name="PACKAGE_SETTINGS">
+        <Options>
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+      <option name="MODULE_SETTINGS">
+        <Options>
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+      <option name="TOP_LEVEL_CLASS_SETTINGS">
+        <Options>
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+      <option name="INNER_CLASS_SETTINGS">
+        <Options>
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+      <option name="METHOD_SETTINGS">
+        <Options>
+          <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+      <option name="FIELD_SETTINGS">
+        <Options>
+          <option name="ENABLED" value="false" />
+        </Options>
+      </option>
+    </inspection_tool>
     <inspection_tool class="MissingOverrideAnnotation" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ignoreObjectMethods" value="true" />
       <option name="ignoreAnonymousClassMethods" value="false" />
     </inspection_tool>
-    <inspection_tool class="MissingRecentApi" enabled="true" level="ERROR" enabled_by_default="true">
-      <option name="sinceBuildString" value="183.3284" />
-      <option name="untilBuildString" value="192.SNAPSHOT" />
-    </inspection_tool>
     <inspection_tool class="MisspelledCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MisspelledEquals" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MisspelledHashcode" enabled="true" level="WARNING" enabled_by_default="true" />
@@ -269,6 +412,7 @@
       <option name="ignoreForLoopDeclarations" value="true" />
     </inspection_tool>
     <inspection_tool class="MultipleTypedDeclaration" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="MultipleVariablesInDeclaration" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="NestedSynchronizedStatement" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="NoExplicitFinalizeCalls" enabled="true" level="WARNING" enabled_by_default="false" />
     <inspection_tool class="NonExceptionNameEndsWithException" enabled="true" level="WARNING" enabled_by_default="true" />
@@ -284,13 +428,15 @@
     <inspection_tool class="ObsoleteCollection" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ignoreRequiredObsoleteCollectionTypes" value="false" />
     </inspection_tool>
+    <inspection_tool class="OptionalOfNullableMisuse" enabled="true" level="WARNING" enabled_by_default="true">
+      <scope name="runtime.classes" level="WARNING" enabled="false" />
+    </inspection_tool>
     <inspection_tool class="PackageDirectoryMismatch" enabled="true" level="WARNING" enabled_by_default="false">
       <scope name="all except testData" level="WARNING" enabled="true" />
     </inspection_tool>
     <inspection_tool class="PackageName" enabled="true" level="WEAK WARNING" enabled_by_default="true">
       <option name="namePattern" value="[a-z_][a-z\d_]*(\.[a-z_][a-zA-Z\d_]*)*" />
     </inspection_tool>
-    <inspection_tool class="ProtectedMemberInFinalClass" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="PublicFieldAccessedInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="PyCompatibilityInspection" enabled="true" level="ERROR" enabled_by_default="true">
       <option name="fromVersion" value="2.4" />
@@ -304,39 +450,10 @@
       <option name="ignoreObscureOperators" value="true" />
     </inspection_tool>
     <inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
-      <searchConfiguration name="SwingUtilities.invokeLater" text="SwingUtilities.invokeLater($runnable$)" recursive="false" caseInsensitive="false" type="JAVA">
-        <constraint name="__context__" within="" contains="" />
-        <constraint name="runnable" within="" contains="" />
-      </searchConfiguration>
       <replaceConfiguration name="DirectCallOfDispose" text="$Instance$.dispose()" recursive="false" caseInsensitive="false" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="Disposer.dispose($Instance$)">
         <constraint name="Instance" regexp="super" nameOfExprType="Disposable" withinHierarchy="true" exprTypeWithinHierarchy="true" minCount="0" negateName="true" within="" contains="" />
         <constraint name="__context__" within="" contains="" />
       </replaceConfiguration>
-      <replaceConfiguration name="new Object[0]" text="new Object[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_OBJECT_ARRAY" />
-      <replaceConfiguration name="new String[0]" text="new String[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_STRING_ARRAY" />
-      <replaceConfiguration name="new Class[0]" text="new Class[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_CLASS_ARRAY" />
-      <replaceConfiguration name="Log.error" text="$LOG$.assertTrue(false, $e$)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$LOG$.error($e$)">
-        <constraint name="e" within="" contains="" />
-        <constraint name="LOG" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toStringArray" text="$collection$.toArray(new String[$collection$.size()])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toObjectArray" text="$collection$.toArray(new Object[$collection$.size()])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toStringArray0" text="$collection$.toArray(new String[0])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toObjectArray0" text="$collection$.toArray(new Object[0])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toStringArray00" text="$collection$.toArray(ArrayUtil.EMPTY_STRING_ARRAY)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
-      <replaceConfiguration name="toObjectArray00" text="$collection$.toArray(ArrayUtil.EMPTY_OBJECT_ARRAY)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
-        <constraint name="collection" within="" contains="" />
-      </replaceConfiguration>
       <replaceConfiguration name="File.createTempFile" text="java.io.File.createTempFile($prefix$, $suffix$)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.openapi.util.io.FileUtil.createTempFile($prefix$, $suffix$)">
         <constraint name="prefix" within="" contains="" />
         <constraint name="suffix" within="" contains="" />
@@ -346,6 +463,35 @@
         <constraint name="suffix" within="" contains="" />
         <constraint name="dir" within="" contains="" />
       </replaceConfiguration>
+      <replaceConfiguration name="Log.error" text="$LOG$.assertTrue(false, $e$)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$LOG$.error($e$)">
+        <constraint name="e" within="" contains="" />
+        <constraint name="LOG" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="new Class[0]" text="new Class[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_CLASS_ARRAY" />
+      <replaceConfiguration name="new Object[0]" text="new Object[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_OBJECT_ARRAY" />
+      <replaceConfiguration name="new String[0]" text="new String[0]" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.EMPTY_STRING_ARRAY" />
+      <searchConfiguration name="SwingUtilities.invokeLater" text="SwingUtilities.invokeLater($runnable$)" recursive="false" caseInsensitive="false" type="JAVA">
+        <constraint name="__context__" within="" contains="" />
+        <constraint name="runnable" within="" contains="" />
+      </searchConfiguration>
+      <replaceConfiguration name="toObjectArray" text="$collection$.toArray(new Object[$collection$.size()])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="toObjectArray0" text="$collection$.toArray(new Object[0])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="toObjectArray00" text="$collection$.toArray(ArrayUtil.EMPTY_OBJECT_ARRAY)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toObjectArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="toStringArray" text="$collection$.toArray(new String[$collection$.size()])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="toStringArray0" text="$collection$.toArray(new String[0])" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="toStringArray00" text="$collection$.toArray(ArrayUtil.EMPTY_STRING_ARRAY)" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.util.ArrayUtil.toStringArray($collection$)">
+        <constraint name="collection" within="" contains="" />
+      </replaceConfiguration>
       <searchConfiguration name="Use RecursionManager?" text="class $Class$ { &#10;  ThreadLocal&lt;$FieldType$&gt; $FieldName$ = $Init$;&#10;}" recursive="false" caseInsensitive="false" type="JAVA">
         <constraint name="Class" script="&quot;&quot;" within="" contains="" />
         <constraint name="FieldType" script="&quot;&quot;" regexp="Collection" withinHierarchy="true" maxCount="2147483647" target="true" wholeWordsOnly="true" within="" contains="" />
@@ -372,9 +518,7 @@
       <option name="ignoreSubstringArguments" value="false" />
     </inspection_tool>
     <inspection_tool class="StringEquality" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="StringEqualsEmptyString" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="StringOperationCanBeSimplifiedMerged" />
-    <inspection_tool class="SwitchStatementWithConfusingDeclaration" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="SynchronizeOnThis" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="SystemOutErr" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="Tests" level="WARNING" enabled="false" />
@@ -387,17 +531,14 @@
     </inspection_tool>
     <inspection_tool class="TestMethodIsPublicVoidNoArg" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="TestOnlyProblems" enabled="true" level="WARNING" enabled_by_default="true" />
-    <inspection_tool class="TextLabelInSwitchStatement" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ThreadDumpStack" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="IDEA Test Sources" level="WARNING" enabled="false" />
     </inspection_tool>
-    <inspection_tool class="ThreadRun" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ThreadStartInConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="ThrowablePrintStackTrace" enabled="true" level="WARNING" enabled_by_default="true">
       <scope name="Tests" level="WARNING" enabled="false" />
     </inspection_tool>
     <inspection_tool class="TrivialIf" enabled="false" level="WARNING" enabled_by_default="false" />
-    <inspection_tool class="TrivialStringConcatenation" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="UndeclaredTests" enabled="true" level="WARNING" enabled_by_default="false">
       <scope name="Tests" level="WARNING" enabled="true" />
     </inspection_tool>
@@ -445,7 +586,6 @@
     <inspection_tool class="VolatileLongOrDoubleField" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="WaitNotInLoop" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="WaitNotInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
-    <inspection_tool class="WaitWhileHoldingTwoLocks" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="WeakerAccess" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="false" />
       <option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="false" />
@@ -455,4 +595,4 @@
       <option name="ignoreNonEmtpyLoops" value="false" />
     </inspection_tool>
   </profile>
-</component>
+</component>
\ No newline at end of file
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirEntityTypeChecker.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirEntityTypeChecker.kt
index 6dda740..efd5464 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirEntityTypeChecker.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirEntityTypeChecker.kt
@@ -5,6 +5,7 @@
 
 package org.jetbrains.rhizomedb.fir.checkers
 
+import org.jetbrains.kotlin.KtFakeSourceElementKind
 import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
 import org.jetbrains.kotlin.diagnostics.reportOn
@@ -32,7 +33,10 @@
             !predicateMatcher.hasFromEidConstructor(declaration.symbol) -> WrongEntityTypeTarget.NO_CONSTRUCTOR
             else -> {
                 val companion = declaration.companionObjectSymbol ?: return
-                val superclasses = companion.resolvedSuperTypeRefs.filter { it.source != null }
+                val superclasses = companion.resolvedSuperTypeRefs.filter {
+                    val source = it.source
+                    source != null && source.kind != KtFakeSourceElementKind.PluginGenerated
+                }
                 if (superclasses.any { it.toRegularClassSymbol(session)?.isInterface == false }) {
                     WrongEntityTypeTarget.ALREADY_EXTENDS
                 } else {
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirPropertyChecker.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirPropertyChecker.kt
index e00482f..01d9df2 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirPropertyChecker.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/checkers/RhizomedbFirPropertyChecker.kt
@@ -15,6 +15,7 @@
 import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
 import org.jetbrains.kotlin.fir.expressions.FirAnnotation
 import org.jetbrains.kotlin.fir.resolve.getContainingClass
+import org.jetbrains.kotlin.fir.resolve.toRegularClassSymbol
 import org.jetbrains.kotlin.fir.types.*
 import org.jetbrains.rhizomedb.fir.KotlinStdlib
 import org.jetbrains.rhizomedb.fir.RhizomedbAnnotations
@@ -87,14 +88,14 @@
     private fun FirProperty.getTargetAttributeType(session: FirSession): ConeKotlinType? {
         val returnType = returnTypeRef
         return if (returnType is FirResolvedTypeRef && returnType.isSet() && session.rhizomedbPredicateMatcher.isManyAnnotated(symbol)) {
-            returnType.type.typeArguments.singleOrNull()?.type ?: returnType.coneTypeSafe()
+            returnType.coneType.typeArguments.singleOrNull()?.type ?: returnType.coneType
         } else {
-            returnType.coneTypeSafe()
+            returnType.coneTypeOrNull
         }
     }
 
     private fun isAssociatedEntityTypeExists(declaration: FirProperty, session: FirSession): Boolean {
-        val entity = declaration.getContainingClass(session) ?: return false
+        val entity = declaration.getContainingClass() ?: return false
         val companion = entity.companionObjectSymbol ?: return false
         return session.rhizomedbPredicateMatcher.isEntityType(companion)
     }
@@ -121,6 +122,6 @@
 private data class AttributeAnnotation(val element: FirAnnotation, val kind: AttributeAnnotationKind)
 
 private fun FirTypeRef.isSet(): Boolean {
-    val type = (this as? FirResolvedTypeRef)?.type ?: return false
+    val type = (this as? FirResolvedTypeRef)?.coneType ?: return false
     return (type as? ConeClassLikeType)?.lookupTag?.classId == KotlinStdlib.setClassId && !type.isNullable
 }
\ No newline at end of file
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirAttributesProvider.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirAttributesProvider.kt
index f72cef3..db0162f 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirAttributesProvider.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirAttributesProvider.kt
@@ -26,7 +26,7 @@
     }
 
     private fun createAttributeForProperty(property: FirPropertySymbol): RhizomedbAttribute? {
-        val klass = property.getContainingClassSymbol(session) ?: return null
+        val klass = property.getContainingClassSymbol() ?: return null
         val propertyType = property.resolvedReturnType
         val (valueKType, kind) = when {
             property.hasAnnotation(RhizomedbAnnotations.manyAnnotationClassId, session) -> {
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirSupertypesExtension.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirSupertypesExtension.kt
index e51a3a6..a725b93 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirSupertypesExtension.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbFirSupertypesExtension.kt
@@ -5,6 +5,9 @@
 
 package org.jetbrains.rhizomedb.fir.extensions
 
+import org.jetbrains.kotlin.KtFakeSourceElementKind
+import org.jetbrains.kotlin.KtRealSourceElementKind
+import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.fir.FirSession
 import org.jetbrains.kotlin.fir.declarations.FirClass
 import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
@@ -18,6 +21,7 @@
 import org.jetbrains.kotlin.fir.resolve.SupertypeSupplier
 import org.jetbrains.kotlin.fir.resolve.defaultType
 import org.jetbrains.kotlin.fir.resolve.getSuperTypes
+import org.jetbrains.kotlin.fir.resolve.toClassSymbol
 import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
 import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
 import org.jetbrains.kotlin.fir.toFirResolvedTypeRef
@@ -41,12 +45,12 @@
         classLikeDeclaration: FirClassLikeDeclaration,
         resolvedSupertypes: List<FirResolvedTypeRef>,
         typeResolver: TypeResolveService,
-    ): List<FirResolvedTypeRef> {
-        if (resolvedSupertypes.any { it.isEntityType(typeResolver) }) {
+    ): List<ConeKotlinType> {
+        if (resolvedSupertypes.any { it.isEntityType(typeResolver) || it.isClass() }) {
             // Already EntityType subclass
             return emptyList()
         }
-        return computeEntityTypeSupertypes(classLikeDeclaration, typeResolver)
+        return computeEntityTypeSupertypes(classLikeDeclaration, typeResolver).map { it.coneType }
     }
 
     @ExperimentalSupertypesGenerationApi
@@ -71,6 +75,10 @@
         return listOf(def.toFirResolvedTypeRef())
     }
 
+    private fun FirResolvedTypeRef.isClass(): Boolean {
+        return source?.kind is KtRealSourceElementKind && coneType.toClassSymbol(session)?.classKind == ClassKind.CLASS
+    }
+
     private fun FirClassLikeSymbol<*>.isEntity(typeResolver: TypeResolveService): Boolean {
         return isSubclassOf(RhizomedbSymbolNames.entityClassId, typeResolver)
     }
@@ -86,22 +94,22 @@
     }
 
     private fun FirResolvedTypeRef.isSubclassOf(classId: ClassId, typeResolver: TypeResolveService): Boolean {
-        return type.classId == classId || type.toClassSymbol(session)?.isSubclassOf(classId, typeResolver) ?: false
+        return coneType.classId == classId || coneType.toClassSymbol(session)?.isSubclassOf(classId, typeResolver) ?: false
     }
 }
 
 private fun typeResolveSupplier(typeResolver: TypeResolveService): SupertypeSupplier = object : SupertypeSupplier() {
     override fun forClass(firClass: FirClass, useSiteSession: FirSession): List<ConeClassLikeType> {
         return firClass.superTypeRefs.mapNotNull { ref ->
-            ref.coneTypeSafe<ConeClassLikeType>() ?: (ref as? FirUserTypeRef)?.let {
-                typeResolver.resolveUserType(it).type as? ConeClassLikeType
+            (ref.coneTypeOrNull as? ConeClassLikeType) ?: (ref as? FirUserTypeRef)?.let {
+                typeResolver.resolveUserType(it).coneType as? ConeClassLikeType
             }
         }
     }
 
     override fun expansionForTypeAlias(typeAlias: FirTypeAlias, useSiteSession: FirSession): ConeClassLikeType? {
         return typeAlias.expandedConeType ?: (typeAlias.expandedTypeRef as? FirUserTypeRef)?.let {
-            typeResolver.resolveUserType(it).type as? ConeClassLikeType
+            typeResolver.resolveUserType(it).coneType as? ConeClassLikeType
         }
     }
 }
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbPredicateMatcher.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbPredicateMatcher.kt
index 5d058f0..9248b73 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbPredicateMatcher.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/fir/extensions/RhizomedbPredicateMatcher.kt
@@ -67,7 +67,7 @@
         symbol.fir.constructors(session).any {
             val valueParam = it.valueParameterSymbols.singleOrNull() ?: return@any false
             val type = valueParam.resolvedReturnType.type.classId
-            type == RhizomedbSymbolNames.eidClassId
+            type == session.builtinTypes.intType.id || type == RhizomedbSymbolNames.eidClassId // TODO: remove EID as it is an alias?
         }
     }
 
diff --git a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/ir/TransformerForCompanionGenerator.kt b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/ir/TransformerForCompanionGenerator.kt
index e452a7f..89134e4 100644
--- a/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/ir/TransformerForCompanionGenerator.kt
+++ b/plugins/rhizomedb/rhizomedb.k2/src/org/jetbrains/rhizomedb/ir/TransformerForCompanionGenerator.kt
@@ -18,6 +18,7 @@
 import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
 import org.jetbrains.kotlin.ir.expressions.impl.IrClassReferenceImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
+import org.jetbrains.kotlin.ir.expressions.impl.fromSymbolOwner
 import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI
 import org.jetbrains.kotlin.ir.types.*
 import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
diff --git a/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityType.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityType.fir.ir.txt
index af88d11..b1904d8 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityType.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityType.fir.ir.txt
@@ -1,7 +1,7 @@
 FILE fqName:test fileName:/attributesWithGeneratedEntityType.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     annotations:
-      GeneratedEntityType(mixins = [])
+      GeneratedEntityType(mixins = [] type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType=kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
     PROPERTY name:eid visibility:public modality:OPEN [val]
       overridden:
@@ -55,7 +55,7 @@
     PROPERTY name:parents visibility:public modality:FINAL [delegated,val]
       annotations:
         Many
-        RefAttribute(flags = [])
+        RefAttribute(flags = [] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parents$delegate type:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentsAttr> (): com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -113,7 +113,7 @@
               <T>: test.MyEntity
               $this: GET_OBJECT 'CLASS GENERATED[org.jetbrains.rhizomedb.fir.RhizomedbPluginKey] OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[com.jetbrains.rhizomedb.EntityType<test.MyEntity>]' type=test.MyEntity.Companion
               name: CONST String type=kotlin.String value="parentsAttr"
-              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=kotlin.Array<kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>>
+              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags
         FUN DEFAULT_PROPERTY_ACCESSOR name:<get-parentsAttr> visibility:public modality:FINAL <> ($this:test.MyEntity.Companion) returnType:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity>
           correspondingProperty: PROPERTY GENERATED[org.jetbrains.rhizomedb.fir.RhizomedbAttributePluginKey] name:parentsAttr visibility:public modality:FINAL [val]
           $this: VALUE_PARAMETER name:<this> type:test.MyEntity.Companion
@@ -249,7 +249,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -309,7 +309,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -336,7 +336,7 @@
   CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
     CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
       BLOCK_BODY
@@ -358,7 +358,7 @@
   CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
     PROPERTY name:mixins visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
@@ -392,7 +392,7 @@
   CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
@@ -426,7 +426,7 @@
   CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
@@ -462,7 +462,7 @@
   CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
diff --git a/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityTypeAndCompanion.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityTypeAndCompanion.fir.ir.txt
index 5976a35..efd284e 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityTypeAndCompanion.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/attributesWithGeneratedEntityTypeAndCompanion.fir.ir.txt
@@ -1,7 +1,7 @@
 FILE fqName:test fileName:/attributesWithGeneratedEntityTypeAndCompanion.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     annotations:
-      GeneratedEntityType(mixins = [])
+      GeneratedEntityType(mixins = [] type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType=kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
     PROPERTY name:eid visibility:public modality:OPEN [val]
       overridden:
@@ -55,7 +55,7 @@
     PROPERTY name:parents visibility:public modality:FINAL [delegated,val]
       annotations:
         Many
-        RefAttribute(flags = [])
+        RefAttribute(flags = [] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parents$delegate type:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentsAttr> (): com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -124,7 +124,7 @@
               <T>: test.MyEntity
               $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[com.jetbrains.rhizomedb.EntityType<test.MyEntity>]' type=test.MyEntity.Companion
               name: CONST String type=kotlin.String value="parentsAttr"
-              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=kotlin.Array<kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>>
+              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags
         FUN DEFAULT_PROPERTY_ACCESSOR name:<get-parentsAttr> visibility:public modality:FINAL <> ($this:test.MyEntity.Companion) returnType:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity>
           correspondingProperty: PROPERTY GENERATED[org.jetbrains.rhizomedb.fir.RhizomedbAttributePluginKey] name:parentsAttr visibility:public modality:FINAL [val]
           $this: VALUE_PARAMETER name:<this> type:test.MyEntity.Companion
@@ -263,7 +263,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -323,7 +323,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -350,7 +350,7 @@
   CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
     CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
       BLOCK_BODY
@@ -372,7 +372,7 @@
   CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
     PROPERTY name:mixins visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
@@ -406,7 +406,7 @@
   CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
@@ -440,7 +440,7 @@
   CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
@@ -476,7 +476,7 @@
   CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteByFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteByFlag.fir.ir.txt
index 25ac1d9..d6590f7 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteByFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteByFlag.fir.ir.txt
@@ -18,7 +18,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE_BY' type=com.jetbrains.rhizomedb.RefFlags])
+        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE_BY' type=com.jetbrains.rhizomedb.RefFlags] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -177,7 +177,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +237,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -249,7 +249,7 @@
   CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
     CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
       BLOCK_BODY
@@ -271,7 +271,7 @@
   CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
     PROPERTY name:mixins visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
@@ -305,7 +305,7 @@
   CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
@@ -339,7 +339,7 @@
   CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
@@ -375,7 +375,7 @@
   CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteFlag.fir.ir.txt
index 9a71de8..4ef4888 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/cascadeDeleteFlag.fir.ir.txt
@@ -18,7 +18,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE' type=com.jetbrains.rhizomedb.RefFlags])
+        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE' type=com.jetbrains.rhizomedb.RefFlags] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -177,7 +177,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +237,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -249,7 +249,7 @@
   CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
     CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
       BLOCK_BODY
@@ -271,7 +271,7 @@
   CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
     PROPERTY name:mixins visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
@@ -305,7 +305,7 @@
   CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
@@ -339,7 +339,7 @@
   CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
@@ -375,7 +375,7 @@
   CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
     annotations:
       Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
     PROPERTY name:flags visibility:public modality:FINAL [val]
       FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/manyAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/manyAttribute.fir.ir.txt
index fb75e5a..09a3f0f 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/manyAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/manyAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/manyAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -19,7 +220,7 @@
     PROPERTY name:parents visibility:public modality:FINAL [delegated,val]
       annotations:
         Many
-        RefAttribute(flags = [])
+        RefAttribute(flags = [] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parents$delegate type:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentsAttr> (): com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -43,7 +244,7 @@
               <T>: test.MyEntity
               $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[com.jetbrains.rhizomedb.EntityType<test.MyEntity>]' type=test.MyEntity.Companion
               name: CONST String type=kotlin.String value="parentsAttr"
-              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=kotlin.Array<kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>>
+              refFlags: VARARG type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags
         FUN DEFAULT_PROPERTY_ACCESSOR name:<get-parentsAttr> visibility:public modality:FINAL <> ($this:test.MyEntity.Companion) returnType:com.jetbrains.rhizomedb.Attributes.Many<test.MyEntity, test.MyEntity>
           correspondingProperty: PROPERTY GENERATED[org.jetbrains.rhizomedb.fir.RhizomedbAttributePluginKey] name:parentsAttr visibility:public modality:FINAL [val]
           $this: VALUE_PARAMETER name:<this> type:test.MyEntity.Companion
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -245,204 +446,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/optionalAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/optionalAttribute.fir.ir.txt
index b418db2..fc383e7 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/optionalAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/optionalAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/optionalAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -18,7 +219,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [])
+        RefAttribute(flags = [] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Optional<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Optional<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Optional<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -176,7 +377,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -236,7 +437,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -244,204 +445,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/requiredAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/requiredAttribute.fir.ir.txt
index fcc7d1c..e294cce 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/requiredAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/requiredAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/requiredAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -18,7 +219,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [])
+        RefAttribute(flags = [] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -176,7 +377,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -236,7 +437,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -244,204 +445,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/severalFlags.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/severalFlags.fir.ir.txt
index 0e147d14a..4f8971f 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/severalFlags.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/severalFlags.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/severalFlags.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -18,7 +219,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE' type=com.jetbrains.rhizomedb.RefFlags, GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE_BY' type=com.jetbrains.rhizomedb.RefFlags])
+        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE' type=com.jetbrains.rhizomedb.RefFlags, GET_ENUM 'ENUM_ENTRY name:CASCADE_DELETE_BY' type=com.jetbrains.rhizomedb.RefFlags] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -178,7 +379,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -238,7 +439,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -246,204 +447,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/ref/uniqueFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/ref/uniqueFlag.fir.ir.txt
index 4555d9b..1be1cc1 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/ref/uniqueFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/ref/uniqueFlag.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/uniqueFlag.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -18,7 +219,7 @@
               receiver: GET_VAR '<this>: test.MyEntity declared in test.MyEntity.<get-eid>' type=test.MyEntity origin=null
     PROPERTY name:parent visibility:public modality:FINAL [delegated,val]
       annotations:
-        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:UNIQUE' type=com.jetbrains.rhizomedb.RefFlags])
+        RefAttribute(flags = [GET_ENUM 'ENUM_ENTRY name:UNIQUE' type=com.jetbrains.rhizomedb.RefFlags] type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType=com.jetbrains.rhizomedb.RefFlags)
       FIELD PROPERTY_DELEGATE name:parent$delegate type:com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> visibility:private [final]
         EXPRESSION_BODY
           CALL 'public final fun <get-parentAttr> (): com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> declared in test.MyEntity.Companion' type=com.jetbrains.rhizomedb.Attributes.Required<test.MyEntity, test.MyEntity> origin=GET_PROPERTY
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -245,204 +446,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/indexedFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/indexedFlag.fir.ir.txt
index a9cfe80..97d9cd8 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/indexedFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/indexedFlag.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/indexedFlag.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/manyAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/manyAttribute.fir.ir.txt
index 36f80b5..1deb7b8 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/manyAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/manyAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/manyAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/optionalAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/optionalAttribute.fir.ir.txt
index bde73f1..05e6518 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/optionalAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/optionalAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/optionalAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/requiredAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/requiredAttribute.fir.ir.txt
index bd3e116..94384de 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/requiredAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/requiredAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/requiredAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/senNonMany.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/senNonMany.fir.ir.txt
index cb3248f..9639881 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/senNonMany.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/senNonMany.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/senNonMany.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/transient/uniqueFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/transient/uniqueFlag.fir.ir.txt
index cb1a2d1..49a9d57 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/transient/uniqueFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/transient/uniqueFlag.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/uniqueFlag.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -177,7 +378,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -237,7 +438,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -260,204 +461,3 @@
       overridden:
         public open fun toString (): kotlin.String declared in kotlin.Any
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/indexedFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/indexedFlag.fir.ir.txt
index 1a102f4..fd5126a 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/indexedFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/indexedFlag.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/indexedFlag.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -179,7 +380,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -239,7 +440,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -247,204 +448,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/manyAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/manyAttribute.fir.ir.txt
index a05c9e8..600f33a 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/manyAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/manyAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/manyAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -179,7 +380,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -239,7 +440,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -247,204 +448,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/optionalAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/optionalAttribute.fir.ir.txt
index b4c1957..f074689 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/optionalAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/optionalAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/optionalAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -179,7 +380,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -239,7 +440,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -247,204 +448,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/requiredAttribute.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/requiredAttribute.fir.ir.txt
index 66f3901..b434ab4 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/requiredAttribute.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/requiredAttribute.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/requiredAttribute.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -179,7 +380,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -239,7 +440,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -247,204 +448,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/serializers.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/serializers.fir.ir.txt
index cb8c0a4..939b63e 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/serializers.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/serializers.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/serializers.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -398,7 +599,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -458,7 +659,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -884,204 +1085,3 @@
             CALL 'public abstract fun <get-descriptor> (): kotlinx.serialization.descriptors.SerialDescriptor declared in kotlinx.serialization.KSerializer' type=kotlinx.serialization.descriptors.SerialDescriptor origin=GET_PROPERTY
               $this: CALL 'public final fun serializer (): kotlinx.serialization.KSerializer<kotlin.Int> declared in kotlinx.serialization.builtins' type=kotlinx.serialization.KSerializer<kotlin.Int> origin=null
                 $receiver: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=kotlin.Int.Companion
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/setNonMany.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/setNonMany.fir.ir.txt
index be5f48c..e14f74a 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/setNonMany.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/setNonMany.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/setNonMany.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -181,7 +382,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -241,7 +442,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -249,204 +450,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/attributes/value/uniqueFlag.fir.ir.txt b/plugins/rhizomedb/testData/codegen/attributes/value/uniqueFlag.fir.ir.txt
index 075f9dd..e965866 100644
--- a/plugins/rhizomedb/testData/codegen/attributes/value/uniqueFlag.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/attributes/value/uniqueFlag.fir.ir.txt
@@ -1,3 +1,204 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/uniqueFlag.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
@@ -179,7 +380,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -239,7 +440,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -247,204 +448,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/entityType/withCompanion/generate.fir.ir.txt b/plugins/rhizomedb/testData/codegen/entityType/withCompanion/generate.fir.ir.txt
index 287aef9..f7d52d9 100644
--- a/plugins/rhizomedb/testData/codegen/entityType/withCompanion/generate.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/entityType/withCompanion/generate.fir.ir.txt
@@ -1,7 +1,208 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/generate.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     annotations:
-      GeneratedEntityType(mixins = [])
+      GeneratedEntityType(mixins = [] type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType=kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
     PROPERTY name:eid visibility:public modality:OPEN [val]
       overridden:
@@ -162,7 +363,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -222,7 +423,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -230,204 +431,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/codegen/entityType/withoutCompanion/generate.fir.ir.txt b/plugins/rhizomedb/testData/codegen/entityType/withoutCompanion/generate.fir.ir.txt
index 8555714..5c230f9 100644
--- a/plugins/rhizomedb/testData/codegen/entityType/withoutCompanion/generate.fir.ir.txt
+++ b/plugins/rhizomedb/testData/codegen/entityType/withoutCompanion/generate.fir.ir.txt
@@ -1,7 +1,208 @@
+FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
+  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
+    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+    PROPERTY name:mixins visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
+        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
+    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
+      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
+    annotations:
+      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
+      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget] type=kotlin.Array<out kotlin.annotation.AnnotationTarget> varargElementType=kotlin.annotation.AnnotationTarget)
+    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+    PROPERTY name:flags visibility:public modality:FINAL [val]
+      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
+        EXPRESSION_BODY
+          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
+      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
+        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
+        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
+        BLOCK_BODY
+          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
+            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
+              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
+    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
+      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
+        EXPRESSION_BODY
+          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
+      BLOCK_BODY
+        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
+        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
+    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
+      overridden:
+        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
+    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
+      overridden:
+        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
+      overridden:
+        public open fun toString (): kotlin.String declared in kotlin.Annotation
+      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
+  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
+    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
+    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
+    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
+    BLOCK_BODY
+      WHEN type=kotlin.Unit origin=IF
+        BRANCH
+          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
+            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
+              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+          then: BLOCK type=kotlin.Unit origin=null
+            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
+              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
+              p1: STRING_CONCATENATION type=kotlin.String
+                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+                CONST String type=kotlin.String value=" != "
+                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
+  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
+    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
+    BLOCK_BODY
+      VAR name:res type:kotlin.String [var]
+        CONST String type=kotlin.String value="<BODY FAILED>"
+      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
+          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
+            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
+          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
+            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
+              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
+              BLOCK_BODY
+                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
+                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
+                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
+                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
+      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
+        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
 FILE fqName:test fileName:/generate.kt
   CLASS CLASS name:MyEntity modality:FINAL visibility:public superTypes:[com.jetbrains.rhizomedb.Entity]
     annotations:
-      GeneratedEntityType(mixins = [])
+      GeneratedEntityType(mixins = [] type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType=kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>)
     $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test.MyEntity
     PROPERTY name:eid visibility:public modality:OPEN [val]
       overridden:
@@ -148,7 +349,7 @@
           $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.EntityType<test.MyEntity>
       PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
         annotations:
-          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+          Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
         overridden:
           public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.EntityType
         FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.EntityType<test.MyEntity>) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -208,7 +409,7 @@
       $this: VALUE_PARAMETER name:<this> type:kotlin.Any
     PROPERTY FAKE_OVERRIDE name:entityClass visibility:public modality:OPEN [fake_override,val]
       annotations:
-        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = []), level = <null>)
+        Deprecated(message = "use EntityType", replaceWith = ReplaceWith(expression = "entityType", imports = [] type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String), level = <null>)
       overridden:
         public open entityClass: kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
       FUN FAKE_OVERRIDE name:<get-entityClass> visibility:public modality:OPEN <> ($this:com.jetbrains.rhizomedb.Entity) returnType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> [fake_override]
@@ -216,204 +417,3 @@
         overridden:
           public open fun <get-entityClass> (): kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Entity> declared in com.jetbrains.rhizomedb.Entity
         $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.Entity
-FILE fqName:com.jetbrains.rhizomedb fileName:/common.kt
-  CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.EntityConstructor
-    CONSTRUCTOR visibility:public <> () returnType:com.jetbrains.rhizomedb.EntityConstructor [primary]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:EntityConstructor modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:CLASS' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-    PROPERTY name:mixins visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'mixins: kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType.<init>' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-mixins> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.GeneratedEntityType) returnType:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>
-        correspondingProperty: PROPERTY name:mixins visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.GeneratedEntityType
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-mixins> (): kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> declared in com.jetbrains.rhizomedb.GeneratedEntityType'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mixins type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> visibility:private [final]' type=kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.GeneratedEntityType declared in com.jetbrains.rhizomedb.GeneratedEntityType.<get-mixins>' type=com.jetbrains.rhizomedb.GeneratedEntityType origin=null
-    CONSTRUCTOR visibility:public <> (mixins:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>>) returnType:com.jetbrains.rhizomedb.GeneratedEntityType [primary]
-      VALUE_PARAMETER name:mixins index:0 type:kotlin.Array<out kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>>> varargElementType:kotlin.reflect.KClass<out com.jetbrains.rhizomedb.Mixin<*>> [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:GeneratedEntityType modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute.<init>' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.RefAttribute) returnType:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.RefAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> declared in com.jetbrains.rhizomedb.RefAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> visibility:private [final]' type=kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.RefAttribute declared in com.jetbrains.rhizomedb.RefAttribute.<get-flags>' type=com.jetbrains.rhizomedb.RefAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags>) returnType:com.jetbrains.rhizomedb.RefAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:kotlin.Array<out com.jetbrains.rhizomedb.RefFlags> varargElementType:com.jetbrains.rhizomedb.RefFlags [vararg]
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:RefAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.TransientAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.TransientAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.TransientAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.TransientAttribute declared in com.jetbrains.rhizomedb.TransientAttribute.<get-flags>' type=com.jetbrains.rhizomedb.TransientAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.TransientAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:TransientAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]
-    annotations:
-      Retention(value = GET_ENUM 'ENUM_ENTRY name:SOURCE' type=kotlin.annotation.AnnotationRetention)
-      Target(allowedTargets = [GET_ENUM 'ENUM_ENTRY name:PROPERTY' type=kotlin.annotation.AnnotationTarget])
-    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-    PROPERTY name:flags visibility:public modality:FINAL [val]
-      FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]
-        EXPRESSION_BODY
-          GET_VAR 'flags: com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute.<init>' type=com.jetbrains.rhizomedb.Indexing origin=INITIALIZE_PROPERTY_FROM_PARAMETER
-      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-flags> visibility:public modality:FINAL <> ($this:com.jetbrains.rhizomedb.ValueAttribute) returnType:com.jetbrains.rhizomedb.Indexing
-        correspondingProperty: PROPERTY name:flags visibility:public modality:FINAL [val]
-        $this: VALUE_PARAMETER name:<this> type:com.jetbrains.rhizomedb.ValueAttribute
-        BLOCK_BODY
-          RETURN type=kotlin.Nothing from='public final fun <get-flags> (): com.jetbrains.rhizomedb.Indexing declared in com.jetbrains.rhizomedb.ValueAttribute'
-            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flags type:com.jetbrains.rhizomedb.Indexing visibility:private [final]' type=com.jetbrains.rhizomedb.Indexing origin=null
-              receiver: GET_VAR '<this>: com.jetbrains.rhizomedb.ValueAttribute declared in com.jetbrains.rhizomedb.ValueAttribute.<get-flags>' type=com.jetbrains.rhizomedb.ValueAttribute origin=null
-    CONSTRUCTOR visibility:public <> (flags:com.jetbrains.rhizomedb.Indexing) returnType:com.jetbrains.rhizomedb.ValueAttribute [primary]
-      VALUE_PARAMETER name:flags index:0 type:com.jetbrains.rhizomedb.Indexing
-        EXPRESSION_BODY
-          GET_ENUM 'ENUM_ENTRY name:NOT_INDEXED' type=com.jetbrains.rhizomedb.Indexing
-      BLOCK_BODY
-        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
-        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ANNOTATION_CLASS name:ValueAttribute modality:OPEN visibility:public superTypes:[kotlin.Annotation]'
-    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
-      overridden:
-        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
-    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
-      overridden:
-        public open fun hashCode (): kotlin.Int declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
-      overridden:
-        public open fun toString (): kotlin.String declared in kotlin.Annotation
-      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
-  FUN name:assertEquals visibility:public modality:FINAL <T> (expected:T of com.jetbrains.rhizomedb.assertEquals, actual:T of com.jetbrains.rhizomedb.assertEquals, report:kotlin.Function1<kotlin.String, kotlin.Unit>) returnType:kotlin.Unit [inline]
-    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
-    VALUE_PARAMETER name:expected index:0 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:actual index:1 type:T of com.jetbrains.rhizomedb.assertEquals
-    VALUE_PARAMETER name:report index:2 type:kotlin.Function1<kotlin.String, kotlin.Unit>
-    BLOCK_BODY
-      WHEN type=kotlin.Unit origin=IF
-        BRANCH
-          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
-            $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
-              arg0: GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-              arg1: GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-          then: BLOCK type=kotlin.Unit origin=null
-            CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.Unit origin=INVOKE
-              $this: GET_VAR 'report: kotlin.Function1<kotlin.String, kotlin.Unit> declared in com.jetbrains.rhizomedb.assertEquals' type=kotlin.Function1<kotlin.String, kotlin.Unit> origin=VARIABLE_AS_FUNCTION
-              p1: STRING_CONCATENATION type=kotlin.String
-                GET_VAR 'expected: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-                CONST String type=kotlin.String value=" != "
-                GET_VAR 'actual: T of com.jetbrains.rhizomedb.assertEquals declared in com.jetbrains.rhizomedb.assertEquals' type=T of com.jetbrains.rhizomedb.assertEquals origin=null
-  FUN name:changeBox visibility:public modality:FINAL <> (body:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>) returnType:kotlin.String
-    VALUE_PARAMETER name:body index:0 type:@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>
-    BLOCK_BODY
-      VAR name:res type:kotlin.String [var]
-        CONST String type=kotlin.String value="<BODY FAILED>"
-      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
-        CALL 'public final fun change (defaultPart: kotlin.Int, f: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit>): com.jetbrains.rhizomedb.Change declared in com.jetbrains.rhizomedb' type=com.jetbrains.rhizomedb.Change origin=null
-          $receiver: CALL 'public final fun empty (): com.jetbrains.rhizomedb.DB declared in com.jetbrains.rhizomedb.DB.Companion' type=com.jetbrains.rhizomedb.DB origin=null
-            $this: GET_OBJECT 'CLASS OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=com.jetbrains.rhizomedb.DB.Companion
-          f: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.Unit> origin=LAMBDA
-            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:com.jetbrains.rhizomedb.ChangeScope) returnType:kotlin.Unit
-              $receiver: VALUE_PARAMETER name:$this$change type:com.jetbrains.rhizomedb.ChangeScope
-              BLOCK_BODY
-                SET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.Unit origin=EQ
-                  CALL 'public abstract fun invoke (p1: P1 of kotlin.Function1): R of kotlin.Function1 declared in kotlin.Function1' type=kotlin.String origin=INVOKE
-                    $this: GET_VAR 'body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> declared in com.jetbrains.rhizomedb.changeBox' type=@[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String> origin=VARIABLE_AS_FUNCTION
-                    p1: GET_VAR '$this$change: com.jetbrains.rhizomedb.ChangeScope declared in com.jetbrains.rhizomedb.changeBox.<anonymous>' type=com.jetbrains.rhizomedb.ChangeScope origin=null
-      RETURN type=kotlin.Nothing from='public final fun changeBox (body: @[ExtensionFunctionType] kotlin.Function1<com.jetbrains.rhizomedb.ChangeScope, kotlin.String>): kotlin.String declared in com.jetbrains.rhizomedb'
-        GET_VAR 'var res: kotlin.String declared in com.jetbrains.rhizomedb.changeBox' type=kotlin.String origin=null
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/attributeWithoutEntityTypeGeneration.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/attributeWithoutEntityTypeGeneration.fir.txt
index 132e8e6..29ac46e 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/attributeWithoutEntityTypeGeneration.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/attributeWithoutEntityTypeGeneration.fir.txt
@@ -1,11 +1,11 @@
 FILE: attributeWithoutEntityTypeGeneration.kt
     public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val string: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringAttr|
             public get(): R|kotlin/String| {
@@ -30,9 +30,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/String| {
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/companionNotEntityType.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/companionNotEntityType.fir.txt
index 2ac8405..4813f65 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/companionNotEntityType.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/companionNotEntityType.fir.txt
@@ -2,12 +2,12 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val string: R|kotlin/String|by <Unresolved name: stringAttr>#
             public get(): R|kotlin/String| {
@@ -34,8 +34,8 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/manyWithoutAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/manyWithoutAttribute.fir.txt
index 57028c1..ee4e3d5 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/manyWithoutAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/manyWithoutAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: manyWithoutAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() public final val string: R|kotlin/collections/Set<kotlin/String>|by <Unresolved name: stringAttr>#
             public get(): R|kotlin/collections/Set<kotlin/String>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.string|.<Ambiguity: getValue, [kotlin/getValue, kotlin/getValue, kotlin/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>#(this@R|/MyEntity|, ::R|/MyEntity.string|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttribute.fir.txt
index 73e8208..6bcae49 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: manyAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/RefAttribute|() public final val children: R|kotlin/collections/Set<MyEntity>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.childrenAttr|
             public get(): R|kotlin/collections/Set<MyEntity>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.children|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<MyEntity>|>|(this@R|/MyEntity|, ::R|/MyEntity.children|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val childrenAttr: R|com/jetbrains/rhizomedb/Attributes.Many<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttributeNotASet.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttributeNotASet.fir.txt
index 90e7448..4ebc4d0 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttributeNotASet.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/manyAttributeNotASet.fir.txt
@@ -1,11 +1,11 @@
 FILE: manyAttributeNotASet.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/RefAttribute|() public final val children: R|kotlin/collections/List<MyEntity>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.childrenAttr|
             public get(): R|kotlin/collections/List<MyEntity>| {
@@ -17,9 +17,9 @@
                 ^ this@R|/MyEntity|.D|/MyEntity.childrenSet|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<MyEntity>|>|(this@R|/MyEntity|, ::R|/MyEntity.childrenSet|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val childrenAttr: R|com/jetbrains/rhizomedb/Attributes.Many<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/nonEntityProperty.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/nonEntityProperty.fir.txt
index 3b1b6fa..05f7bd0 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/nonEntityProperty.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/nonEntityProperty.fir.txt
@@ -1,11 +1,11 @@
 FILE: nonEntityProperty.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/RefAttribute|() public final val str: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.strAttr|
             public get(): R|kotlin/String| {
@@ -17,9 +17,9 @@
                 ^ this@R|/MyEntity|.D|/MyEntity.children|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/collections/Set<MyEntity>|>|(this@R|/MyEntity|, ::R|/MyEntity.children|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val strAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/optionalAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/optionalAttribute.fir.txt
index 5bf021c..c094d07 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/optionalAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/optionalAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: optionalAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/RefAttribute|() public final val nullableParent: R|MyEntity?|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.nullableParentAttr|
             public get(): R|MyEntity?| {
                 ^ this@R|/MyEntity|.D|/MyEntity.nullableParent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Optional.getValue: R|MyEntity?|>|(this@R|/MyEntity|, ::R|/MyEntity.nullableParent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val nullableParentAttr: R|com/jetbrains/rhizomedb/Attributes.Optional<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/refFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/refFlags.fir.txt
index ced5054..7e321a0 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/refFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/refFlags.fir.txt
@@ -1,20 +1,20 @@
 FILE: refFlags.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/RefAttribute|(flags = vararg(Q|com/jetbrains/rhizomedb/RefFlags|.R|com/jetbrains/rhizomedb/RefFlags.CASCADE_DELETE_BY|)) public final val parent: R|MyEntity|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.parentAttr|
             public get(): R|MyEntity| {
                 ^ this@R|/MyEntity|.D|/MyEntity.parent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MyEntity|>|(this@R|/MyEntity|, ::R|/MyEntity.parent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val parentAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/requiredAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/requiredAttribute.fir.txt
index c51f245..c8c198a 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/requiredAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/requiredAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: requiredAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/RefAttribute|() public final val parent: R|MyEntity|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.parentAttr|
             public get(): R|MyEntity| {
                 ^ this@R|/MyEntity|.D|/MyEntity.parent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MyEntity|>|(this@R|/MyEntity|, ::R|/MyEntity.parent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val parentAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/ref/wrongIndexingFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/ref/wrongIndexingFlags.fir.txt
index f520e35..273eb92 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/ref/wrongIndexingFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/ref/wrongIndexingFlags.fir.txt
@@ -1,20 +1,20 @@
 FILE: wrongIndexingFlags.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/RefAttribute|(flags = vararg(Int(42))) public final val parent: R|MyEntity|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.parentAttr|
             public get(): R|MyEntity| {
                 ^ this@R|/MyEntity|.D|/MyEntity.parent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MyEntity|>|(this@R|/MyEntity|, ::R|/MyEntity.parent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val parentAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/severalAnnotations.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/severalAnnotations.fir.txt
index 39ac80c..50aca62 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/severalAnnotations.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/severalAnnotations.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val string: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringAttr|
             public get(): R|kotlin/String| {
                 ^ this@R|/MyEntity|.D|/MyEntity.string|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/String|>|(this@R|/MyEntity|, ::R|/MyEntity.string|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val stringAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/entityProperty.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/entityProperty.fir.txt
index dd9ec73..e3bc3e7 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/entityProperty.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/entityProperty.fir.txt
@@ -1,20 +1,20 @@
 FILE: entityProperty.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val parent: R|MyEntity|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.parentAttr|
             public get(): R|MyEntity| {
                 ^ this@R|/MyEntity|.D|/MyEntity.parent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MyEntity|>|(this@R|/MyEntity|, ::R|/MyEntity.parent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val parentAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/indexingFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/indexingFlags.fir.txt
index cb39a7b..5f68254 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/indexingFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/indexingFlags.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|(flags = Q|com/jetbrains/rhizomedb/Indexing|.R|com/jetbrains/rhizomedb/Indexing.UNIQUE|) public final val marker: R|MarkerInterface|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.markerAttr|
             public get(): R|MarkerInterface| {
                 ^ this@R|/MyEntity|.D|/MyEntity.marker|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MarkerInterface|>|(this@R|/MyEntity|, ::R|/MyEntity.marker|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val markerAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttribute.fir.txt
index 1107665..2e72407 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttribute.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val manyMarkers: R|kotlin/collections/Set<MarkerInterface>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.manyMarkersAttr|
             public get(): R|kotlin/collections/Set<MarkerInterface>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.manyMarkers|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<MarkerInterface>|>|(this@R|/MyEntity|, ::R|/MyEntity.manyMarkers|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val manyMarkersAttr: R|com/jetbrains/rhizomedb/Attributes.Many<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttributeNotASet.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttributeNotASet.fir.txt
index 8e8160b..e6e6bf2 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttributeNotASet.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/manyAttributeNotASet.fir.txt
@@ -2,12 +2,12 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val manyMarkers: R|kotlin/collections/List<MarkerInterface>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.manyMarkersAttr|
             public get(): R|kotlin/collections/List<MarkerInterface>| {
@@ -19,9 +19,9 @@
                 ^ this@R|/MyEntity|.D|/MyEntity.manyMutableMarkers|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<MarkerInterface>|>|(this@R|/MyEntity|, ::R|/MyEntity.manyMutableMarkers|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val manyMarkersAttr: R|com/jetbrains/rhizomedb/Attributes.Many<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/nonManySet.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/nonManySet.fir.txt
index ff57807..d508ee4 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/nonManySet.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/nonManySet.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val markers: R|kotlin/collections/Set<MarkerInterface>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.markersAttr|
             public get(): R|kotlin/collections/Set<MarkerInterface>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.markers|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/collections/Set<MarkerInterface>|>|(this@R|/MyEntity|, ::R|/MyEntity.markers|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val markersAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/collections/Set<MarkerInterface>, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/optionalAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/optionalAttribute.fir.txt
index 7163f83..fdd9555 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/optionalAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/optionalAttribute.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val nullableMarker: R|MarkerInterface?|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.nullableMarkerAttr|
             public get(): R|MarkerInterface?| {
                 ^ this@R|/MyEntity|.D|/MyEntity.nullableMarker|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Optional.getValue: R|MarkerInterface?|>|(this@R|/MyEntity|, ::R|/MyEntity.nullableMarker|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val nullableMarkerAttr: R|com/jetbrains/rhizomedb/Attributes.Optional<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/requiredAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/requiredAttribute.fir.txt
index 80e0798..0a9371e 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/requiredAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/requiredAttribute.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|() public final val marker: R|MarkerInterface|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.markerAttr|
             public get(): R|MarkerInterface| {
                 ^ this@R|/MyEntity|.D|/MyEntity.marker|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MarkerInterface|>|(this@R|/MyEntity|, ::R|/MyEntity.marker|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val markerAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/transient/wrongIndexingFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/transient/wrongIndexingFlags.fir.txt
index 13032e0..202fd7e 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/transient/wrongIndexingFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/transient/wrongIndexingFlags.fir.txt
@@ -2,21 +2,21 @@
     public abstract interface MarkerInterface : R|kotlin/Any| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/TransientAttribute|(flags = Int(42)) public final val marker: R|MarkerInterface|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.markerAttr|
             public get(): R|MarkerInterface| {
                 ^ this@R|/MyEntity|.D|/MyEntity.marker|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MarkerInterface|>|(this@R|/MyEntity|, ::R|/MyEntity.marker|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val markerAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MarkerInterface, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/entityProperty.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/entityProperty.fir.txt
index 441ae77..34b7c0a 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/entityProperty.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/entityProperty.fir.txt
@@ -1,20 +1,20 @@
 FILE: entityProperty.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val parent: R|MyEntity|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.parentAttr|
             public get(): R|MyEntity| {
                 ^ this@R|/MyEntity|.D|/MyEntity.parent|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|MyEntity|>|(this@R|/MyEntity|, ::R|/MyEntity.parent|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val parentAttr: R|com/jetbrains/rhizomedb/Attributes.Required<MyEntity, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/indexingFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/indexingFlags.fir.txt
index 72aff88..c931a80 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/indexingFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/indexingFlags.fir.txt
@@ -1,20 +1,20 @@
 FILE: indexingFlags.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|(flags = Q|com/jetbrains/rhizomedb/Indexing|.R|com/jetbrains/rhizomedb/Indexing.UNIQUE|) public final val string: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringAttr|
             public get(): R|kotlin/String| {
                 ^ this@R|/MyEntity|.D|/MyEntity.string|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/String|>|(this@R|/MyEntity|, ::R|/MyEntity.string|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val stringAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttribute.fir.txt
index 0083ae4..6ebee37 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: manyAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val manyStrings: R|kotlin/collections/Set<kotlin/String>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.manyStringsAttr|
             public get(): R|kotlin/collections/Set<kotlin/String>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.manyStrings|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<kotlin/String>|>|(this@R|/MyEntity|, ::R|/MyEntity.manyStrings|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val manyStringsAttr: R|com/jetbrains/rhizomedb/Attributes.Many<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttributeNotASet.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttributeNotASet.fir.txt
index 4ae141d..b1d3133 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttributeNotASet.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/manyAttributeNotASet.fir.txt
@@ -1,11 +1,11 @@
 FILE: manyAttributeNotASet.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/Many|() @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val manyStringsList: R|kotlin/collections/List<kotlin/String>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.manyStringsListAttr|
             public get(): R|kotlin/collections/List<kotlin/String>| {
@@ -17,9 +17,9 @@
                 ^ this@R|/MyEntity|.D|/MyEntity.manyStrings|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Many.getValue: R|kotlin/collections/Set<kotlin/String>|>|(this@R|/MyEntity|, ::R|/MyEntity.manyStrings|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val manyStringsListAttr: R|com/jetbrains/rhizomedb/Attributes.Many<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/nonManySet.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/nonManySet.fir.txt
index f229732..b517fc6 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/nonManySet.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/nonManySet.fir.txt
@@ -1,20 +1,20 @@
 FILE: nonManySet.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val strings: R|kotlin/collections/Set<kotlin/String>|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringsAttr|
             public get(): R|kotlin/collections/Set<kotlin/String>| {
                 ^ this@R|/MyEntity|.D|/MyEntity.strings|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/collections/Set<kotlin/String>|>|(this@R|/MyEntity|, ::R|/MyEntity.strings|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val stringsAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/collections/Set<kotlin/String>, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/optionalAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/optionalAttribute.fir.txt
index ba9e270..9911955 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/optionalAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/optionalAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: optionalAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val nullableString: R|kotlin/String?|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.nullableStringAttr|
             public get(): R|kotlin/String?| {
                 ^ this@R|/MyEntity|.D|/MyEntity.nullableString|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Optional.getValue: R|kotlin/String?|>|(this@R|/MyEntity|, ::R|/MyEntity.nullableString|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val nullableStringAttr: R|com/jetbrains/rhizomedb/Attributes.Optional<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/requiredAttribute.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/requiredAttribute.fir.txt
index a52e6e7..f4f4e1b 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/requiredAttribute.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/requiredAttribute.fir.txt
@@ -1,20 +1,20 @@
 FILE: requiredAttribute.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|() public final val string: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringAttr|
             public get(): R|kotlin/String| {
                 ^ this@R|/MyEntity|.D|/MyEntity.string|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/String|>|(this@R|/MyEntity|, ::R|/MyEntity.string|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val stringAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/attributes/value/wrongIndexingFlags.fir.txt b/plugins/rhizomedb/testData/firMembers/attributes/value/wrongIndexingFlags.fir.txt
index c9aa999..3eac881 100644
--- a/plugins/rhizomedb/testData/firMembers/attributes/value/wrongIndexingFlags.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/attributes/value/wrongIndexingFlags.fir.txt
@@ -1,20 +1,20 @@
 FILE: wrongIndexingFlags.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/ValueAttribute|(flags = Int(42)) public final val string: R|kotlin/String|by this@R|/MyEntity.Companion|.R|/MyEntity.Companion.stringAttr|
             public get(): R|kotlin/String| {
                 ^ this@R|/MyEntity|.D|/MyEntity.string|.R|SubstitutionOverride<com/jetbrains/rhizomedb/Attributes.Required.getValue: R|kotlin/String|>|(this@R|/MyEntity|, ::R|/MyEntity.string|)
             }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             public final val stringAttr: R|com/jetbrains/rhizomedb/Attributes.Required<kotlin/String, MyEntity>|
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.fir.txt
index 3d03b54..fad5425f 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.fir.txt
@@ -9,14 +9,14 @@
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final companion object Companion : R|MyBaseClass|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
+        public final companion object Companion : R|MyBaseClass| {
             private constructor(): R|MyEntity.Companion| {
                 super<R|MyBaseClass|>(String(MyEntity))
             }
@@ -26,13 +26,13 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
-        Q|MyEntity|.R|SubstitutionOverride</MyEntity.Companion.all: R|kotlin/collections/Set<MyEntity>|>|()
-        Q|MyEntity|.R|SubstitutionOverride</MyEntity.Companion.single: R|MyEntity|>|()
-        Q|MyEntity|.R|SubstitutionOverride</MyEntity.Companion.singleOrNull: R|MyEntity?|>|()
+        Q|MyEntity|.<Ambiguity: all, [com/jetbrains/rhizomedb/all, com/jetbrains/rhizomedb/all, com/jetbrains/rhizomedb/all, com/jetbrains/rhizomedb/all]>#()
+        Q|MyEntity|.<Ambiguity: single, [com/jetbrains/rhizomedb/single, com/jetbrains/rhizomedb/single]>#()
+        Q|MyEntity|.<Ambiguity: singleOrNull, [com/jetbrains/rhizomedb/singleOrNull, com/jetbrains/rhizomedb/singleOrNull]>#()
     }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.kt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.kt
index f1e083a..f6f4a70 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.kt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsClass.kt
@@ -10,7 +10,7 @@
 }
 
 fun foo() {
-    MyEntity.all()
-    MyEntity.single()
-    MyEntity.singleOrNull()
+    MyEntity.<!NONE_APPLICABLE!>all<!>()
+    MyEntity.<!NONE_APPLICABLE!>single<!>()
+    MyEntity.<!NONE_APPLICABLE!>singleOrNull<!>()
 }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsEntityType.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsEntityType.fir.txt
index 1f43d61..efe736b 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsEntityType.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionExtendsEntityType.fir.txt
@@ -1,11 +1,11 @@
 FILE: companionExtendsEntityType.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -17,9 +17,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.fir.txt
new file mode 100644
index 0000000..6ea6305
--- /dev/null
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.fir.txt
@@ -0,0 +1,26 @@
+FILE: companionImplementsInterface.kt
+    public abstract interface MarkerInterface : R|kotlin/Any| {
+    }
+    @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
+            super<R|kotlin/Any|>()
+        }
+
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
+
+        public final companion object Companion : R|MarkerInterface|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
+            private constructor(): R|MyEntity.Companion| {
+                super<R|com/jetbrains/rhizomedb/EntityType<MyEntity>|>()
+            }
+
+            public final val X: R|kotlin/Int| = Int(42)
+                public get(): R|kotlin/Int|
+
+        }
+
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
+
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+
+    }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.kt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.kt
new file mode 100644
index 0000000..23d9df6
--- /dev/null
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.kt
@@ -0,0 +1,10 @@
+import com.jetbrains.rhizomedb.*
+
+interface MarkerInterface
+
+@GeneratedEntityType
+data class MyEntity(override val eid: EID) : Entity {
+    <!NONE_APPLICABLE("")!>companion object : MarkerInterface {
+        val X = 42
+    }<!>
+}
\ No newline at end of file
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionIsEntityTypeEventually.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionIsEntityTypeEventually.fir.txt
index df32d3c..d9f323a 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionIsEntityTypeEventually.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionIsEntityTypeEventually.fir.txt
@@ -1,17 +1,17 @@
 FILE: companionIsEntityTypeEventually.kt
     public abstract class MyEntityType : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
-        public constructor(ident: R|kotlin/String|, cons: R|(com/jetbrains/rhizomedb/EID) -> MyEntity|): R|MyEntityType| {
+        public constructor(ident: R|kotlin/String|, cons: R|({com/jetbrains/rhizomedb/EID=} kotlin/Int) -> MyEntity|): R|MyEntityType| {
             super<R|com/jetbrains/rhizomedb/EntityType<MyEntity>|>(R|<local>/ident|, String(test), R|<local>/cons|)
         }
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|MyEntityType| {
             private constructor(): R|MyEntity.Companion| {
@@ -23,9 +23,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/enumClass.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/enumClass.fir.txt
index 2414c4f..bbd4109 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/enumClass.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/enumClass.fir.txt
@@ -1,11 +1,11 @@
 FILE: enumClass.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final enum class MyEntity : R|com/jetbrains/rhizomedb/Entity|, R|kotlin/Enum<MyEntity>| {
-        private constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        private constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Enum<MyEntity>|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final static enum entry A: R|MyEntity| = object : R|MyEntity| {
             private constructor(): R|<anonymous>| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generate.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generate.fir.txt
index f2c0b33..ae4e63c 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generate.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generate.fir.txt
@@ -1,11 +1,11 @@
 FILE: generate.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -17,9 +17,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithAbstractMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithAbstractMixin.fir.txt
index c10ef13..2da3b83 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithAbstractMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithAbstractMixin.fir.txt
@@ -6,12 +6,12 @@
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|MyEntityMixin|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -23,9 +23,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithMixin.fir.txt
index ff67019..e9749a9 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithMixin.fir.txt
@@ -6,12 +6,12 @@
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|MyEntityMixin|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -23,9 +23,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithNonMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithNonMixin.fir.txt
index 50a6b47..7e1ff20 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithNonMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/generateWithNonMixin.fir.txt
@@ -1,11 +1,11 @@
 FILE: generateWithNonMixin.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|kotlin/String|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -17,9 +17,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/isEntityEventually.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/isEntityEventually.fir.txt
index 59268ba..763b9d2 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/isEntityEventually.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/isEntityEventually.fir.txt
@@ -4,12 +4,12 @@
     public abstract interface DerivedEntity : R|BaseEntity| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|DerivedEntity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any|, R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
             private constructor(): R|MyEntity.Companion| {
@@ -21,9 +21,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noAnnotation.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noAnnotation.fir.txt
index 99586e4..121e66d 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noAnnotation.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noAnnotation.fir.txt
@@ -1,11 +1,11 @@
 FILE: noAnnotation.kt
     public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any| {
             private constructor(): R|MyEntity.Companion| {
@@ -17,9 +17,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noEidConstructor.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noEidConstructor.fir.txt
index 18b06c6..add695b 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noEidConstructor.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/noEidConstructor.fir.txt
@@ -1,11 +1,11 @@
 FILE: noEidConstructor.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|, data: R|kotlin/Any|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|, data: R|kotlin/Any|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final val data: R|kotlin/Any| = R|<local>/data|
             public get(): R|kotlin/Any|
@@ -20,11 +20,11 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final operator fun component2(): R|kotlin/Any|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|, data: R|kotlin/Any| = this@R|/MyEntity|.R|/MyEntity.data|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|, data: R|kotlin/Any| = this@R|/MyEntity|.R|/MyEntity.data|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/notEntity.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/notEntity.fir.txt
index 965eb88..235144f 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/notEntity.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withCompanion/notEntity.fir.txt
@@ -4,12 +4,12 @@
     public abstract interface DerivedInterface : R|BaseInterface| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|DerivedInterface| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public final val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public final val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final companion object Companion : R|kotlin/Any| {
             private constructor(): R|MyEntity.Companion| {
@@ -21,9 +21,9 @@
 
         }
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/enumClass.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/enumClass.fir.txt
index 90fcc51..72439fb 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/enumClass.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/enumClass.fir.txt
@@ -1,11 +1,11 @@
 FILE: enumClass.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final enum class MyEntity : R|com/jetbrains/rhizomedb/Entity|, R|kotlin/Enum<MyEntity>| {
-        private constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        private constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Enum<MyEntity>|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final static enum entry A: R|MyEntity| = object : R|MyEntity| {
             private constructor(): R|<anonymous>| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generate.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generate.fir.txt
index 7cbebb6..4f20622 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generate.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generate.fir.txt
@@ -1,15 +1,15 @@
 FILE: generate.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithAbstractMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithAbstractMixin.fir.txt
index a924e90..17d9183 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithAbstractMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithAbstractMixin.fir.txt
@@ -6,16 +6,16 @@
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|MyEntityMixin|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithMixin.fir.txt
index a5c6f92..662b125 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithMixin.fir.txt
@@ -6,16 +6,16 @@
 
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|MyEntityMixin|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithNonMixin.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithNonMixin.fir.txt
index bb9a9996..663ae23 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithNonMixin.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/generateWithNonMixin.fir.txt
@@ -1,15 +1,15 @@
 FILE: generateWithNonMixin.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|(mixins = vararg(<getClass>(Q|kotlin/String|))) public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/isEntityEventually.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/isEntityEventually.fir.txt
index 35dbc0a..a60e1eb 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/isEntityEventually.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/isEntityEventually.fir.txt
@@ -4,16 +4,16 @@
     public abstract interface DerivedEntity : R|BaseEntity| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|DerivedEntity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noAnnotation.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noAnnotation.fir.txt
index a746d12..ddbad8e 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noAnnotation.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noAnnotation.fir.txt
@@ -1,15 +1,15 @@
 FILE: noAnnotation.kt
     public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noEidConstructor.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noEidConstructor.fir.txt
index 1d08e0e..76e9c8b 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noEidConstructor.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/noEidConstructor.fir.txt
@@ -1,20 +1,20 @@
 FILE: noEidConstructor.kt
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|com/jetbrains/rhizomedb/Entity| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|, data: R|kotlin/Any|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|, data: R|kotlin/Any|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final val data: R|kotlin/Any| = R|<local>/data|
             public get(): R|kotlin/Any|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
         public final operator fun component2(): R|kotlin/Any|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|, data: R|kotlin/Any| = this@R|/MyEntity|.R|/MyEntity.data|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|, data: R|kotlin/Any| = this@R|/MyEntity|.R|/MyEntity.data|): R|MyEntity|
 
         public final companion object Companion : R|com/jetbrains/rhizomedb/EntityType<MyEntity>| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/notEntity.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/notEntity.fir.txt
index ac26caf..b712adf 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/notEntity.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/notEntity.fir.txt
@@ -4,16 +4,16 @@
     public abstract interface DerivedInterface : R|BaseInterface| {
     }
     @R|com/jetbrains/rhizomedb/GeneratedEntityType|() public final data class MyEntity : R|DerivedInterface| {
-        public constructor(eid: R|com/jetbrains/rhizomedb/EID|): R|MyEntity| {
+        public constructor(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|): R|MyEntity| {
             super<R|kotlin/Any|>()
         }
 
-        public final val eid: R|com/jetbrains/rhizomedb/EID| = R|<local>/eid|
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public final val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = R|<local>/eid|
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final operator fun component1(): R|com/jetbrains/rhizomedb/EID|
+        public final operator fun component1(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
-        public final fun copy(eid: R|com/jetbrains/rhizomedb/EID| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
+        public final fun copy(eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = this@R|/MyEntity|.R|/MyEntity.eid|): R|MyEntity|
 
         public final companion object Companion : R|kotlin/Any| {
         }
diff --git a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/object.fir.txt b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/object.fir.txt
index 8fb5fb2..d75d2b1 100644
--- a/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/object.fir.txt
+++ b/plugins/rhizomedb/testData/firMembers/entityType/withoutCompanion/object.fir.txt
@@ -4,8 +4,8 @@
             super<R|kotlin/Any|>()
         }
 
-        public open override val eid: R|com/jetbrains/rhizomedb/EID| = Int(0)
-            public get(): R|com/jetbrains/rhizomedb/EID|
+        public open override val eid: R|{com/jetbrains/rhizomedb/EID=} kotlin/Int| = Int(0)
+            public get(): R|{com/jetbrains/rhizomedb/EID=} kotlin/Int|
 
     }
     public final fun foo(): R|kotlin/Unit| {
diff --git a/plugins/rhizomedb/tests-gen/org/jetbrains/rhizomedb/runners/RhizomedbFirPsiDiagnosticTestGenerated.java b/plugins/rhizomedb/tests-gen/org/jetbrains/rhizomedb/runners/RhizomedbFirPsiDiagnosticTestGenerated.java
index 6f42799..2776138 100644
--- a/plugins/rhizomedb/tests-gen/org/jetbrains/rhizomedb/runners/RhizomedbFirPsiDiagnosticTestGenerated.java
+++ b/plugins/rhizomedb/tests-gen/org/jetbrains/rhizomedb/runners/RhizomedbFirPsiDiagnosticTestGenerated.java
@@ -263,6 +263,12 @@
       }
 
       @Test
+      @TestMetadata("companionImplementsInterface.kt")
+      public void testCompanionImplementsInterface() {
+        runTest("plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionImplementsInterface.kt");
+      }
+
+      @Test
       @TestMetadata("companionIsEntityTypeEventually.kt")
       public void testCompanionIsEntityTypeEventually() {
         runTest("plugins/rhizomedb/testData/firMembers/entityType/withCompanion/companionIsEntityTypeEventually.kt");