private List <String> getBasic(String key, String constraintValue, String defaultValue, MultiMap <Value> map) { List <String> mappedValues = new List <String>(); // If null key use the default value if this is defined if (key == null) { if (defaultValue != null) { mappedValues.Add(defaultValue); return(mappedValues); } else { return(null); } } if (map.IsEmpty()) { // no translation - this is a one-one mapping: mappedValues.Add(key); return(mappedValues); } else if (map.ContainsKey(key)) { List <Value> values = map[key]; List <String> stringValues = new List <String>(); foreach (Value v in values) { if (v.constraintMatches(constraintValue)) { stringValues.Add(v.getValue()); } } return(stringValues); } else if (defaultValue != null) { mappedValues.Add(defaultValue); return(mappedValues); } return(null); // mapping failed }