@Override
	public int[] find(final String[] criteria) throws RecordNotFoundException {
		final List<Integer> results = new ArrayList<Integer>();
		for (int n = 0; n < this.contractors.size(); n++) {
			if (!this.isRecordDeleted(n)) {
				this.lock(n);

				boolean match = true;
				for (int i = 0; i < criteria.length; i++) {
					if (criteria[i] != null) {
						String field = this.contractors.get(n)[i];
						if (field != null) {
							field = field.toLowerCase();
							final String critField = criteria[i].toLowerCase();
							if (!field.contains(critField)) {
								match = false;
							}
						} else {
							match = false;
						}
					}
				}

				if (match) {
					results.add(n);
				}

				this.unlock(n);
			}
		}

		final int[] intResults = new int[results.size()];
		for (int i = 0; i < results.size(); i++) {
			intResults[i] = results.get(i);
		}

		return intResults;
	}