// Path: src/main/java/com/github/bingoohuang/instantiator/BeanInstantiator.java
// public interface BeanInstantiator<T> {
//     T newInstance();
// }
// 
// Path: src/main/java/com/github/bingoohuang/instantiator/BeanInstantiatorFactory.java
// public class BeanInstantiatorFactory {
//     @SuppressWarnings("unchecked")
//     public static <T> BeanInstantiator<T> newBeanInstantiator(Class<T> beanClass) {
//         val ctors = (Constructor<T>[]) beanClass.getConstructors();
//         for (val ctor : ctors) {
//             if (ctor.getParameterTypes().length == 0) {
//                 return new ConstructorBeanInstantiator<T>(ctor);
//             }
//         }
// 
//         return new ObjenesisBeanInstantiator<T>(beanClass);
//     }
// }


import com.github.bingoohuang.instantiator.BeanInstantiator;
import com.github.bingoohuang.instantiator.BeanInstantiatorFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Table;
import lombok.Getter;
import lombok.val;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.util.List;
package com.github.bingoohuang.excel2beans;



public class ExcelSheetToBeans<T> {
    private final BeanInstantiator<T> instantiator;
    private final List<ExcelBeanField> beanFields;
    private @Getter final boolean hasTitle;
    private final DataFormatter cellFormatter = new DataFormatter();
// Path: src/main/java/com/github/bingoohuang/instantiator/BeanInstantiator.java
// public interface BeanInstantiator<T> {
//     T newInstance();
// }
// 
// Path: src/main/java/com/github/bingoohuang/instantiator/BeanInstantiatorFactory.java
// public class BeanInstantiatorFactory {
//     @SuppressWarnings("unchecked")
//     public static <T> BeanInstantiator<T> newBeanInstantiator(Class<T> beanClass) {
//         val ctors = (Constructor<T>[]) beanClass.getConstructors();
//         for (val ctor : ctors) {
//             if (ctor.getParameterTypes().length == 0) {
//                 return new ConstructorBeanInstantiator<T>(ctor);
//             }
//         }
// 
//         return new ObjenesisBeanInstantiator<T>(beanClass);
//     }
// }


// Path: src/main/java/com/github/bingoohuang/excel2beans/ExcelSheetToBeans.java
import com.github.bingoohuang.instantiator.BeanInstantiator;
import com.github.bingoohuang.instantiator.BeanInstantiatorFactory;
import com.google.common.collect.Lists;
import com.google.common.collect.Table;
import lombok.Getter;
import lombok.val;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.util.List;

package com.github.bingoohuang.excel2beans;



public class ExcelSheetToBeans<T> {
    private final BeanInstantiator<T> instantiator;
    private final List<ExcelBeanField> beanFields;
    private @Getter final boolean hasTitle;
    private final DataFormatter cellFormatter = new DataFormatter();
    private final Sheet sheet;