code: public boolean isApplicable(Signature s) {
  
      // to make sure what the isAssignableFrom method means:
      // Object.class.isAssignableFrom(String.class) == true
  
      if (this.signature.length == s.signature.length) {
        for (int i = 0; i < this.signature.length; i++) {
          Class<?> type = s.signature[i];
          // an argument of null is always applicable
          if (type != null) {
            if (!this.signature[i].isAssignableFrom(type)) {
              return false;
            }
          }
        }
        return true;
      }
      return false;
    }
docs: This method determines if the given signature is applicable for this signature. Here applicable means that if this
  is the signature of a method, that method could be called with arguments of the given signature {@code s}. <br>
  Only call this method if this signature does NOT {@link #getType(int) contain} {@code null}.
  
  @param s is the signature to test.
  @return {@code true} if the given signature is applicable for this signature, {@code false} otherwise.