def insert_before(hsh, &block)
      existing_key = hsh.fetch(:existing_key, nil)
      new_key = hsh[:new_key]
      value = hsh[:value]
      if block_given?
        self.insert_here(0, new_key, value, &block)
      else
        self.insert_here(0, new_key, value, existing_key)
      end
    end
def insert_before(hsh, &block)
      existing_key = hsh.fetch(:existing_key, nil)
      new_key = hsh[:new_key]
      value = hsh[:value]
      if block_given?
        self.insert_here(0, new_key, value, &block)
      else
        self.insert_here(0, new_key, value, existing_key)
      end
    end
Insert a key and value before an existing key or the first entry for'
 which the supplied block evaluates to true. The block takes precendence
 over the supplied key.
 Options:'
  * :existing_key (default: nil). If nil or not supplied then a block is required.
  * :new_key (required)
  * :value (required)
 @raise KeyError if the supplied existing key is not found, the new
 key exists, or the block never evaluates to true.