def add(value, options = {})
      # Set defaults
      options[:duplication_filter] = :do_not_add unless options.key?(:duplication_filter)

      # Get path
      path = get_array

      # Check duplicates
      if path.member?(value)
        case options[:duplication_filter]
        when :do_not_add, :deny
          # do nothing, we already have one in the list
          return
        when :remove_existing
          path.delete!(value)
        when :none
          # just pass through
        else
          raise WrongOptionError, "Unknown :duplication_filter!"
        end
      end

      # Change path array
      case options[:where]
      when :start, :left
        path.unshift value
      when :end, :right
        path.push value
      else
        raise WrongOptionError, "Unknown :where!"
      end

      # Save new array
      set_array(path)
    end
def add(value, options = {})
      # Set defaults
      options[:duplication_filter] = :do_not_add unless options.key?(:duplication_filter)

      # Get path
      path = get_array

      # Check duplicates
      if path.member?(value)
        case options[:duplication_filter]
        when :do_not_add, :deny
          # do nothing, we already have one in the list
          return
        when :remove_existing
          path.delete!(value)
        when :none
          # just pass through
        else
          raise WrongOptionError, "Unknown :duplication_filter!"
        end
      end

      # Change path array
      case options[:where]
      when :start, :left
        path.unshift value
      when :end, :right
        path.push value
      else
        raise WrongOptionError, "Unknown :where!"
      end

      # Save new array
      set_array(path)
    end
Adds value to the path