@SuppressWarnings({"unchecked", "rawtypes"})
 private static Generator<Object[]> createSourceGeneratorFromObject(
     ArrayTypeDescriptor descriptor,
     BeneratorContext context,
     Generator<Object[]> generator,
     Object sourceObject) {
   if (sourceObject instanceof StorageSystem) {
     StorageSystem storage = (StorageSystem) sourceObject;
     String selector = descriptor.getSelector();
     String subSelector = descriptor.getSubSelector();
     if (!StringUtil.isEmpty(subSelector))
       generator =
           WrapperFactory.applyHeadCycler(
               new DataSourceGenerator(storage.query(subSelector, false, context)));
     else generator = new DataSourceGenerator(storage.query(selector, false, context));
   } else if (sourceObject instanceof EntitySource) {
     DataSourceGenerator<Entity> entityGenerator =
         new DataSourceGenerator<Entity>((EntitySource) sourceObject);
     generator = WrapperFactory.applyConverter(entityGenerator, new Entity2ArrayConverter());
   } else if (sourceObject instanceof Generator) {
     generator = (Generator<Object[]>) sourceObject;
   } else throw new ConfigurationError("Source type not supported: " + sourceObject.getClass());
   return generator;
 }