test_class.file: saga-lib/src/test/java/com/codebullets/sagalib/startup/ReflectionsTypeScannerTest.java
test_class.identifier: ReflectionsTypeScannerTest
test_case.body: @Test
      public void scanForSagas_defaultCtor_doesNotReturnAbstractBaseClass() {
          // given
          ReflectionsTypeScanner sut = new ReflectionsTypeScanner();
  
          // when
          Collection<Class<? extends Saga>> foundSagas = sut.scanForSagas();
  
          // then
          assertThat("Expected not to find AbstractSaga in returned list.", foundSagas, not(hasItem(AbstractSaga.class)));
      }
test_case.class_method_signature: ReflectionsTypeScannerTest.scanForSagas_defaultCtor_doesNotReturnAbstractBaseClass()
test_case.full_signature: @Test public void scanForSagas_defaultCtor_doesNotReturnAbstractBaseClass()
test_case.identifier: scanForSagas_defaultCtor_doesNotReturnAbstractBaseClass
test_case.invocations: scanForSagas assertThat not hasItem
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void scanForSagas_defaultCtor_doesNotReturnAbstractBaseClass()
focal_class.declarator: reflections
focal_class.modifier: private final
focal_class.original_string: private final Reflections reflections;
focal_class.type: Reflections
focal_class.var_name: reflections
focal_class.file: saga-lib/src/main/java/com/codebullets/sagalib/startup/ReflectionsTypeScanner.java
focal_class.identifier: ReflectionsTypeScanner
focal_class.interfaces: implements TypeScanner
focal_class.class_method_signature: ReflectionsTypeScanner.ReflectionsTypeScanner()
focal_class.full_signature: public  ReflectionsTypeScanner()
focal_class.identifier: ReflectionsTypeScanner
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  ReflectionsTypeScanner()
focal_class.class_method_signature: ReflectionsTypeScanner.ReflectionsTypeScanner(final Reflections reflections)
focal_class.full_signature: public  ReflectionsTypeScanner(final Reflections reflections)
focal_class.identifier: ReflectionsTypeScanner
focal_class.modifiers: public
focal_class.parameters: (final Reflections reflections)
focal_class.signature:  ReflectionsTypeScanner(final Reflections reflections)
focal_class.class_method_signature: ReflectionsTypeScanner.scanForSagas()
focal_class.full_signature: @Override public Collection<Class<? extends Saga>> scanForSagas()
focal_class.identifier: scanForSagas
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Collection<Class<? extends Saga>>
focal_class.signature: Collection<Class<? extends Saga>> scanForSagas()
focal_class.class_method_signature: ReflectionsTypeScanner.removeAbstractTypes(final Collection<Class<? extends Saga>> foundTypes)
focal_class.full_signature: private Collection<Class<? extends Saga>> removeAbstractTypes(final Collection<Class<? extends Saga>> foundTypes)
focal_class.identifier: removeAbstractTypes
focal_class.modifiers: private
focal_class.parameters: (final Collection<Class<? extends Saga>> foundTypes)
focal_class.return: Collection<Class<? extends Saga>>
focal_class.signature: Collection<Class<? extends Saga>> removeAbstractTypes(final Collection<Class<? extends Saga>> foundTypes)
focal_class.class_method_signature: ReflectionsTypeScanner.copy(final Set<Class<? extends AbstractSingleEventSaga>> source)
focal_class.full_signature: private Set<Class<? extends Saga>> copy(final Set<Class<? extends AbstractSingleEventSaga>> source)
focal_class.identifier: copy
focal_class.modifiers: private
focal_class.parameters: (final Set<Class<? extends AbstractSingleEventSaga>> source)
focal_class.return: Set<Class<? extends Saga>>
focal_class.signature: Set<Class<? extends Saga>> copy(final Set<Class<? extends AbstractSingleEventSaga>> source)
focal_method.body: @Override
      public Collection<Class<? extends Saga>> scanForSagas() {
          Set<Class<? extends Saga>> sagaTypes = reflections.getSubTypesOf(Saga.class);
  
          // separate searches in case saga-lib is in embedded jar when performing directory scanning
          Set<Class<? extends AbstractSaga>> abstractSagaTypes = reflections.getSubTypesOf(AbstractSaga.class);
          Set<Class<? extends AbstractSingleEventSaga>> singleEventSagaTypes = reflections.getSubTypesOf(AbstractSingleEventSaga.class);
  
          Set<Class<? extends Saga>> foundTypes = Sets.union(sagaTypes, abstractSagaTypes);
          Set<Class<? extends Saga>> mergedSet = Sets.union(foundTypes, copy(singleEventSagaTypes));
  
          return removeAbstractTypes(mergedSet);
      }
focal_method.class_method_signature: ReflectionsTypeScanner.scanForSagas()
focal_method.full_signature: @Override public Collection<Class<? extends Saga>> scanForSagas()
focal_method.identifier: scanForSagas
focal_method.invocations: getSubTypesOf getSubTypesOf getSubTypesOf union union copy removeAbstractTypes
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Collection<Class<? extends Saga>>
focal_method.signature: Collection<Class<? extends Saga>> scanForSagas()