public static void InverseSearchAdd(Hashtable inverseSearch, Stack2 stack, String unstack) {
String last = (String)stack.Peek();
InverseStore store = (InverseStore)inverseSearch[last];
if (store == null) {
store = new InverseStore();
inverseSearch[last] = store;
}
for (int k = stack.Count - 2; k >= 0; --k) {
last = (String)stack[k];
InverseStore store2;
int idx = store.part.IndexOf(last);
if (idx < 0) {
store.part.Add(last);
store2 = new InverseStore();
store.follow.Add(store2);
}
else
store2 = (InverseStore)store.follow[idx];
store = store2;
}
store.part.Add("");
store.follow.Add(unstack);
}