code: private String evaluateServicePidOrFilterExpression(Object value) {
          if (value == null) {
              return SERVICE_PID_UNMATCHED_FILTER;
          }
          if (value instanceof String) {
              return FilterUtils.createPropertyFilter(Constants.SERVICE_PID, (String) value);
          }
          if (value instanceof String[]) {
              return evaluateServicePidOrFilterExpression(Arrays.asList((String[]) value));
          }
          if (value instanceof Vector) {
              return evaluateServicePidOrFilterExpression((Vector<?>) value);
          }
          return null;
      }
docs: Evaluates the servicePidOrFilter expression function. If the value is
  null, an unmatchable filter is returned. If the value is a string, a
  filter matching "service.pid" to that value is returned. If the value
  is an array or vector of strings, an "or" filter is returned matching
  "service.pid" to any of those values. Otherwise (including if the vector
  contains a non-string), null is returned.
  
  @param value the object to evaluate
  @return a filter or null if the value is invalid for the function