def demand
      if variables.empty?
        if dimension > 0
          shape.last.times do |i|
            dest = @dest.element INT.new(i)
            source = @source.dimension == 0 ? @source :
                                              @source.element(INT.new(i))
            Store.new(dest, source).demand
          end
        elsif @dest.class < Pointer_
          @dest.store @source.demand
        else
          @dest.assign @source.demand
        end
        @dest
      else
        super
      end
    end
def demand
      if variables.empty?
        if dimension > 0
          shape.last.times do |i|
            dest = @dest.element INT.new(i)
            source = @source.dimension == 0 ? @source :
                                              @source.element(INT.new(i))
            Store.new(dest, source).demand
          end
        elsif @dest.class < Pointer_
          @dest.store @source.demand
        else
          @dest.assign @source.demand
        end
        @dest
      else
        super
      end
    end
Reevaluate computation

 @return [Node,Object] Result of computation

 @see #force

 @private