private Optional<Property> mergeProperties(List<PythonTypeStubMethod.PropertyMethod> pairs) {
		Property res = new Property();
		if (pairs.size() == 1) {
			PythonTypeStubMethod.PropertyMethod p = pairs.get(0);
			if (p.isGetter()) {
				res.getter = p;
			}
			else {
				res.setter = p;
			}
			return Optional.of(res);
		}
		PythonTypeStubMethod.PropertyMethod getter = pairs.stream()
				.filter(PythonTypeStubMethod.PropertyMethod::isGetter)
				.findFirst()
				.orElse(null);
		if (getter != null) {
			// go through all remaining methods and take the first matching pair
			// it does not matter if one is a boxed primitive and the other is
			// unboxed because the JavaProperty will use the primitive type anyway
			PythonTypeStubMethod.PropertyMethod setter = pairs.stream()
					.filter(PythonTypeStubMethod.PropertyMethod::isSetter)
					.filter(getter::isPair)
					.findFirst()
					.orElse(null);
			res.getter = getter;
			res.setter = setter;
			return Optional.of(res);
		}
		return Optional.empty();
	}
Merges the provided pairs into one Python property

@param pairs the property pairs
@return an optional Python property
GhidraBuild/BuildFiles/Doclets/src/main/java/ghidra/doclets/typestubs/PythonTypeStubType.java