public String InverseSearchGlobal(ArrayList parts) {
if (parts.Count == 0)
return null;
InverseStore store = (InverseStore)inverseSearch[parts[parts.Count - 1]];
if (store == null)
return null;
for (int k = parts.Count - 2; k >= 0; --k) {
String part = (String)parts[k];
int idx = store.part.IndexOf(part);
if (idx < 0) {
if (store.IsSimilar(part))
return null;
return store.DefaultName;
}
store = (InverseStore)store.follow[idx];
}
return store.DefaultName;
}