def check_compatibility!
      case
      when @executables.any? {|exe| exe[File::SEPARATOR] && !File.absolute_path?(exe) }
        # if the executable contains a path component, it *must* be absolute.
        raise ArgumentError, "Relative-path executable requirements are not supported."
      end
    end
def check_compatibility!
      case
      when @executables.any? {|exe| exe[File::SEPARATOR] && !File.absolute_path?(exe) }
        # if the executable contains a path component, it *must* be absolute.
        raise ArgumentError, "Relative-path executable requirements are not supported."
      end
    end
@overload initialize(executables, *requirements, options = {})
   @param executables [String,Array<String>] api-compatible executable names
                                      e.g, ['python2','python']
   @param requirements [Array<String>, String] splat of strings
     whose elements follow the pattern
       [<operator>] <version>
     Where <operator> is optional (default '='') and in the set
       '=', '!=', '>', '<', '>=', '<=', or '~>'
     And <version> is dot-separated integers with optional
     alphanumeric pre-release suffix. See also
     {http://docs.rubygems.org/read/chapter/16 Specifying Versions}
   @param options [Hash<Symbol,Object>]
   @option options [Cliver::Detector] :detector (Detector.new)
   @option options [#to_proc, Object] :detector (see Detector::generate)
   @option options [#to_proc] :filter ({Cliver::Filter::IDENTITY})
   @option options [Boolean]  :strict (false)
                                      true -  fail if first match on path fails
                                              to meet version requirements.
                                              This is used for Cliver::assert.
                                      false - continue looking on path until a
                                              sufficient version is found.
   @option options [String]   :path   ('*') the path on which to search
                                      for executables. If an asterisk (`*`) is
                                      included in the supplied string, it is
                                      replaced with `ENV['PATH']`

   @yieldparam executable_path [String] (see Detector#detect_version)
   @yieldreturn [String] containing a version that, once filtered, can be
                         used for comparrison.
 One of these things is not like the other ones...
 Some feature combinations just aren't compatible. This method ensures
 the the features selected for this object are compatible with each-other.
 @return [void]
 @raise [ArgumentError] if incompatibility found