test_class.declarator: partClass =
              asAggregatePartClass(AnAggregatePart.class)
test_class.modifier: private final
test_class.original_string: private final AggregatePartClass<AnAggregatePart> partClass =
              asAggregatePartClass(AnAggregatePart.class);
test_class.type: AggregatePartClass<AnAggregatePart>
test_class.var_name: partClass
test_class.declarator: root
test_class.modifier: private
test_class.original_string: private AnAggregateRoot root;
test_class.type: AnAggregateRoot
test_class.var_name: root
test_class.file: server/src/test/java/io/spine/server/aggregate/model/AggregatePartClassTest.java
test_class.identifier: AggregatePartClassTest
test_case.body: @Test
      @DisplayName("throw exception when aggregate part does not have appropriate constructor")
      void throwOnNoProperCtorAvailable() {
          AggregatePartClass<WrongAggregatePart> wrongPartClass =
                  asAggregatePartClass(WrongAggregatePart.class);
          assertThrows(ModelError.class, wrongPartClass::constructor);
      }
test_case.class_method_signature: AggregatePartClassTest.throwOnNoProperCtorAvailable()
test_case.full_signature: @Test @DisplayName("throw exception when aggregate part does not have appropriate constructor") void throwOnNoProperCtorAvailable()
test_case.identifier: throwOnNoProperCtorAvailable
test_case.invocations: asAggregatePartClass assertThrows
test_case.modifiers: @Test @DisplayName("throw exception when aggregate part does not have appropriate constructor")
test_case.parameters: ()
test_case.return: void
test_case.signature: void throwOnNoProperCtorAvailable()
focal_class.declarator: serialVersionUID = 0L
focal_class.modifier: private static final
focal_class.original_string: private static final long serialVersionUID = 0L;
focal_class.type: long
focal_class.var_name: serialVersionUID
focal_class.declarator: rootClass
focal_class.modifier: @LazyInit
      private transient volatile @MonotonicNonNull
focal_class.original_string: @LazyInit
      private transient volatile @MonotonicNonNull Class<? extends AggregateRoot<?>> rootClass;
focal_class.type: Class<? extends AggregateRoot<?>>
focal_class.var_name: rootClass
focal_class.file: server/src/main/java/io/spine/server/aggregate/model/AggregatePartClass.java
focal_class.identifier: AggregatePartClass
focal_class.class_method_signature: AggregatePartClass.AggregatePartClass(Class<A> cls)
focal_class.full_signature: private  AggregatePartClass(Class<A> cls)
focal_class.identifier: AggregatePartClass
focal_class.modifiers: private
focal_class.parameters: (Class<A> cls)
focal_class.signature:  AggregatePartClass(Class<A> cls)
focal_class.class_method_signature: AggregatePartClass.asAggregatePartClass(Class<A> cls)
focal_class.full_signature: public static AggregatePartClass<A> asAggregatePartClass(Class<A> cls)
focal_class.identifier: asAggregatePartClass
focal_class.modifiers: public static
focal_class.parameters: (Class<A> cls)
focal_class.return: AggregatePartClass<A>
focal_class.signature: AggregatePartClass<A> asAggregatePartClass(Class<A> cls)
focal_class.class_method_signature: AggregatePartClass.rootClass()
focal_class.full_signature: @SuppressWarnings("unchecked") // The type is ensured by the class declaration. public Class<? extends AggregateRoot<?>> rootClass()
focal_class.identifier: rootClass
focal_class.modifiers: @SuppressWarnings("unchecked") // The type is ensured by the class declaration. public
focal_class.parameters: ()
focal_class.return: Class<? extends AggregateRoot<?>>
focal_class.signature: Class<? extends AggregateRoot<?>> rootClass()
focal_class.class_method_signature: AggregatePartClass.createFactory()
focal_class.full_signature: @Override protected EntityFactory<A> createFactory()
focal_class.identifier: createFactory
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: EntityFactory<A>
focal_class.signature: EntityFactory<A> createFactory()
focal_class.class_method_signature: AggregatePartClass.createRoot(BoundedContext bc, I aggregateId)
focal_class.full_signature: @SuppressWarnings("TypeParameterUnusedInFormals") // The returned type _is_ bound with the type of identifiers. public R createRoot(BoundedContext bc, I aggregateId)
focal_class.identifier: createRoot
focal_class.modifiers: @SuppressWarnings("TypeParameterUnusedInFormals") // The returned type _is_ bound with the type of identifiers. public
focal_class.parameters: (BoundedContext bc, I aggregateId)
focal_class.return: R
focal_class.signature: R createRoot(BoundedContext bc, I aggregateId)
focal_class.superclass: extends AggregateClass<A>
focal_method.body: public static <A extends AggregatePart>
      AggregatePartClass<A> asAggregatePartClass(Class<A> cls) {
          checkNotNull(cls);
          AggregatePartClass<A> result = (AggregatePartClass<A>)
                  get(cls, AggregatePartClass.class, () -> new AggregatePartClass<>(cls));
          return result;
      }
focal_method.class_method_signature: AggregatePartClass.asAggregatePartClass(Class<A> cls)
focal_method.full_signature: public static AggregatePartClass<A> asAggregatePartClass(Class<A> cls)
focal_method.identifier: asAggregatePartClass
focal_method.invocations: checkNotNull get
focal_method.modifiers: public static
focal_method.parameters: (Class<A> cls)
focal_method.return: AggregatePartClass<A>
focal_method.signature: AggregatePartClass<A> asAggregatePartClass(Class<A> cls)