public static Expression deepCopy(
     Expression paramExpression, IdentityHashTable paramIdentityHashTable) {
   if (paramExpression == null) {
     return null;
   }
   Object localObject = paramIdentityHashTable.get(paramExpression);
   if (localObject != null) {
     return (Expression) localObject;
   }
   localObject = paramExpression.deepCopy(paramIdentityHashTable);
   paramIdentityHashTable.put(paramExpression, localObject);
   return (Expression) localObject;
 }
 protected Expression deepCopy(IdentityHashTable identityhashtable) {
   Expression expression = deepCopy(result, identityhashtable);
   if (expression == null && result != null) {
     return null;
   }
   identityhashtable = ((IdentityHashTable) (identityhashtable.get(block)));
   if (identityhashtable == null) {
     identityhashtable = block;
   } else {
     identityhashtable = (BlockExp) identityhashtable;
   }
   identityhashtable = new ExitExp(expression, identityhashtable);
   identityhashtable.flags = getFlags();
   return identityhashtable;
 }