class AviatorRuntimeJavaElementType extends AviatorRuntimeJavaType {


  private static final long serialVersionUID = -955529214730255727L;
  private final Object index;
  private final Object container;

  private final ContainerType containerType;

  public static enum ContainerType {
    List, Array, Map
  }

  public AviatorRuntimeJavaElementType(final ContainerType containerType, final Object container,
      final Object index, final Callable<Object> callable) {
    super(null);
    setCallable(callable);
    this.container = container;
    this.index = index;
    this.containerType = containerType;
  }

  @SuppressWarnings({"unchecked", "rawtypes"})
  @Override
  public AviatorObject setValue(final AviatorObject value, final Map<String, Object> env) {<FILL_FUNCTION_BODY>}
}

    Object val = value.getValue(env);
    switch (this.containerType) {
      case Array:
        ArrayUtils.set(this.container, (int) this.index,
            Reflector.boxArg(this.container.getClass().getComponentType(), val));
        break;
      case List:
        ((List) this.container).set((int) this.index, val);
        break;
      case Map:
        ((Map) this.container).put(this.index, val);
        break;
      default:
        throw new ExpressionRuntimeException("Unknown container type: " + this.containerType);
    }
    return AviatorRuntimeJavaType.valueOf(val);
  
<methods>public void <init>(java.lang.Object) ,public static java.lang.String genName() ,public Callable<java.lang.Object> getCallable() ,public java.lang.String getName() ,public java.lang.Object getValue(Map<java.lang.String,java.lang.Object>) ,public void setCallable(Callable<java.lang.Object>) ,public static com.googlecode.aviator.runtime.type.AviatorObject valueOf(java.lang.Object) <variables>public static final ThreadLocal<com.googlecode.aviator.utils.VarNameGenerator> TEMP_VAR_GEN,protected Callable<java.lang.Object> callable,protected java.lang.Object object,private static final long serialVersionUID