def []=( *indices )
      value = indices.pop
      value = typecode.new value unless value.matched?
      if indices.empty?
        check_shape value
        unless compilable? and value.compilable? and dimension > 0
          Store.new(self, value).demand
        else
          GCCFunction.run Store.new(self, value)
        end
        value
      else
        if indices.last.is_a? Range
          view = slice indices.last.min, indices.last.size
        else
          view = element indices.last
        end
        view[*indices[0 ... -1]] = value
      end
    end
def []=( *indices )
      value = indices.pop
      value = typecode.new value unless value.matched?
      if indices.empty?
        check_shape value
        unless compilable? and value.compilable? and dimension > 0
          Store.new(self, value).demand
        else
          GCCFunction.run Store.new(self, value)
        end
        value
      else
        if indices.last.is_a? Range
          view = slice indices.last.min, indices.last.size
        else
          view = element indices.last
        end
        view[*indices[0 ... -1]] = value
      end
    end
Assign value to array element(s)

 @overload []=( *indices, value )
   Assign a value to an element of an array
   @param [Array<Integer>] *indices Index/indices to select the element.
   @param [Object,Node] value Ruby object with new value.

 @return [Object,Node] Returns the value.