content: package com.alibaba.fastjson.parser.deserializer;
  
  import java.lang.reflect.Array;
  import java.lang.reflect.Type;
  import java.util.Collection;
  import java.util.List;
  import java.util.Map;
  
  import com.alibaba.fastjson.JSONArray;
  import com.alibaba.fastjson.parser.DefaultJSONParser;
  import com.alibaba.fastjson.util.TypeUtils;
  
  @SuppressWarnings("rawtypes")
  public final class ResolveFieldDeserializer extends FieldDeserializer {
  
      private final int               index;
      private final List              list;
      private final DefaultJSONParser parser;
      
      private final Object              key;
      private final Map map;
      
      private final Collection collection;
  
      public ResolveFieldDeserializer(DefaultJSONParser parser, List list, int index){
          super(null, null);
          this.parser = parser;
          this.index = index;
          this.list = list;
          
          key = null;
          map = null;
          
          collection = null;
      }
      
      public ResolveFieldDeserializer(Map map, Object index){
          super(null, null);
          
          this.parser = null;
          this.index = -1;
          this.list = null;
          
          this.key = index;
          this.map = map;
          
          collection = null;
      }
      
      public ResolveFieldDeserializer(Collection collection){
          super(null, null);
          
          this.parser = null;
          this.index = -1;
          this.list = null;
          
          key = null;
          map = null;
          
          this.collection = collection;
      }
  
      @SuppressWarnings("unchecked")
      public void setValue(Object object, Object value) {
          if (map != null) {
              map.put(key, value);
              return;
          }
          
          if (collection != null) {
              collection.add(value);
              return;
          }
          
          list.set(index, value);
  
          if (list instanceof JSONArray) {
              JSONArray jsonArray = (JSONArray) list;
              Object array = jsonArray.getRelatedArray();
  
              if (array != null) {
                  int arrayLength = Array.getLength(array);
  
                  if (arrayLength > index) {
                      Object item;
                      if (jsonArray.getComponentType() != null) {
                          item = TypeUtils.cast(value, jsonArray.getComponentType(), parser.getConfig());
                      } else {
                          item = value;
                      }
                      Array.set(array, index, item);
                  }
              }
          }
      }
  
      public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {
  
      }
  
  }