// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/DefaultArgumentExtractor.java
// public interface DefaultArgumentExtractor<T> extends ArgumentExtractor<T> {
// 
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Action.java
// public enum Action {
//     commit,
//     reconsume;
//     Action(){}
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Result.java
// public class Result<T> {
//     private T result;
//     private Action action;
// 
//     public Result(T result) {
//         this.result = result;
//     }
// 
//     public Result(Action action) {
//         this.action = action;
//     }
// 
//     public Object getResult() {
//         return result;
//     }
// 
//     public Action getAction() {
//         return action;
//     }
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Results.java
// public class Results {
// 
//     public static <T> Result<T> next(T result){
//         return new Result(result);
//     }
// 
//     public static Result end(Action action){
//         return new Result(action);
//     }
// }


import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONException;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.github.mq.consumer.DefaultArgumentExtractor;
import com.github.mq.consumer.models.Action;
import com.github.mq.consumer.models.Result;
import com.github.mq.consumer.models.Results;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;
import java.util.Optional;
import java.util.ServiceLoader;
package com.github.mq.consumer.parms;



/**
 * Created by wangziqing on 17/7/17.
 */
public class ArgumentExtractors {

    private static final Logger logger = LoggerFactory.getLogger(ArgumentExtractors.class);

    public static ArgumentExtractor defaultExtractor;

    static {
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/DefaultArgumentExtractor.java
// public interface DefaultArgumentExtractor<T> extends ArgumentExtractor<T> {
// 
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Action.java
// public enum Action {
//     commit,
//     reconsume;
//     Action(){}
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Result.java
// public class Result<T> {
//     private T result;
//     private Action action;
// 
//     public Result(T result) {
//         this.result = result;
//     }
// 
//     public Result(Action action) {
//         this.action = action;
//     }
// 
//     public Object getResult() {
//         return result;
//     }
// 
//     public Action getAction() {
//         return action;
//     }
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/models/Results.java
// public class Results {
// 
//     public static <T> Result<T> next(T result){
//         return new Result(result);
//     }
// 
//     public static Result end(Action action){
//         return new Result(action);
//     }
// }


// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/parms/ArgumentExtractors.java
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONException;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.github.mq.consumer.DefaultArgumentExtractor;
import com.github.mq.consumer.models.Action;
import com.github.mq.consumer.models.Result;
import com.github.mq.consumer.models.Results;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;
import java.util.Optional;
import java.util.ServiceLoader;

package com.github.mq.consumer.parms;



/**
 * Created by wangziqing on 17/7/17.
 */
public class ArgumentExtractors {

    private static final Logger logger = LoggerFactory.getLogger(ArgumentExtractors.class);

    public static ArgumentExtractor defaultExtractor;

    static {
        Iterator<DefaultArgumentExtractor> producerServiceLoader = ServiceLoader.load(DefaultArgumentExtractor.class).iterator();