private Map<Long, ProcessInfo> doProcessCriteriaQuery(Criteria criteria) {
Map<Long, ProcessInfo> matches = new HashMap<Long, ProcessInfo>();
Attribute attribute = criteria.getConditional().getAttribute();
Operation op = new Operation(criteria.getConditional().getOperator());
Qualifier qualifier = criteria.getConditional().getQualifier();
String operand1;
String operand2;
String pidfileContentsCache = null; // so we avoid reading the file over and over again
for (ProcessInfo process : getProcesses()) {
ProcessInfo processToMatch; // will be the same as process unless the parent qualifier was provided
if (qualifier.equals(Qualifier.parent)) {
processToMatch = getParentProcess(process);
} else {
processToMatch = process;
}