def update
      if (results = what_changed?)[:ary]
        update_ptr
        update_ary_cache
        true
      elsif results[:ptr]
        update_ary
        update_ptr_cache
        true
      else
        false
      end
    end
def update
      if (results = what_changed?)[:ary]
        update_ptr
        update_ary_cache
        true
      elsif results[:ptr]
        update_ary
        update_ptr_cache
        true
      else
        false
      end
    end
detects what changed and updates as needed
 @return [TrueClass || FalseClass] updated?