/**
  * Declare that CYC-PRODUCT is composed of CODE-PRODUCT, KB-PRODUCT and BRANCH-TAG. This
  * information is used to compositionally determine the CYC-PRODUCT of a running image, which in
  * turn can be used to gate various behaviors.
  */
 @SubL(source = "cycl/builder-utilities.lisp", position = 27262)
 public static final SubLObject declare_cyc_product(
     SubLObject cyc_product,
     SubLObject code_product,
     SubLObject kb_product,
     SubLObject branch_tag) {
   {
     final SubLThread thread = SubLProcess.currentSubLThread();
     checkType(cyc_product, $sym35$KEYWORDP);
     checkType(kb_product, $sym35$KEYWORDP);
     checkType(code_product, $sym35$KEYWORDP);
     checkType(branch_tag, $sym36$STRINGP);
     if ((NIL
         != cyc_product_definition_presentP(cyc_product, code_product, kb_product, branch_tag))) {
       return Errors.warn($str37$The_cyc_product___A__is_already_p, cyc_product);
     } else if ((NIL != find_cyc_product(code_product, kb_product, branch_tag))) {
       return Errors.error(
           $str38$There_already_exists_a_different_,
           find_cyc_product(code_product, kb_product, branch_tag));
     } else if ((NIL
         != conses_high.assoc(
             cyc_product,
             $cyc_product_definitions$.getDynamicValue(thread),
             UNPROVIDED,
             UNPROVIDED))) {
       return Errors.error($str39$The_cyc_product__A_already_exists, cyc_product);
     } else {
       $all_cyc_products$.setDynamicValue(
           cons(cyc_product, $all_cyc_products$.getDynamicValue(thread)), thread);
       $cyc_product_definitions$.setDynamicValue(
           cons(
               list(cyc_product, kb_product, code_product, branch_tag),
               $cyc_product_definitions$.getDynamicValue(thread)),
           thread);
       return $cyc_product_definitions$.getDynamicValue(thread);
     }
   }
 }
 /**
  * Returns the cyc product identifier for this combination of code-product, kb-product and
  * branch-tag.
  */
 @SubL(source = "cycl/builder-utilities.lisp", position = 28769)
 public static final SubLObject find_cyc_product(
     SubLObject code_product, SubLObject kb_product, SubLObject branch_tag) {
   {
     final SubLThread thread = SubLProcess.currentSubLThread();
     return Sequences.find(
             list(code_product, kb_product, branch_tag),
             $cyc_product_definitions$.getDynamicValue(thread),
             Symbols.symbol_function(EQUAL),
             Symbols.symbol_function($sym40$CDR),
             UNPROVIDED,
             UNPROVIDED)
         .first();
   }
 }
 /** Returns T if a cyc product definition composed of these 4 values exists. */
 @SubL(source = "cycl/builder-utilities.lisp", position = 28472)
 public static final SubLObject cyc_product_definition_presentP(
     SubLObject cyc_product,
     SubLObject code_product,
     SubLObject kb_product,
     SubLObject branch_tag) {
   {
     final SubLThread thread = SubLProcess.currentSubLThread();
     return conses_high.member(
         list(cyc_product, code_product, kb_product, branch_tag),
         $cyc_product_definitions$.getDynamicValue(thread),
         Symbols.symbol_function(EQUAL),
         UNPROVIDED);
   }
 }
 @SubL(source = "cycl/operation-queues.lisp", position = 9125)
 public static final SubLObject local_operation_storage_queue_enqueue(SubLObject operation) {
   {
     final SubLThread thread = SubLProcess.currentSubLThread();
     {
       SubLObject lock = $local_operation_storage_queue_lock$.getDynamicValue(thread);
       SubLObject release = NIL;
       try {
         release = Locks.seize_lock(lock);
         queues.enqueue(operation, $local_operation_storage_queue$.getGlobalValue());
       } finally {
         if ((NIL != release)) {
           Locks.release_lock(lock);
         }
       }
     }
     return NIL;
   }
 }
 @SubL(source = "cycl/operation-queues.lisp", position = 5157)
 public static final SubLObject transcript_queue_dequeue() {
   {
     final SubLThread thread = SubLProcess.currentSubLThread();
     {
       SubLObject ans = NIL;
       SubLObject lock = $transcript_queue_lock$.getDynamicValue(thread);
       SubLObject release = NIL;
       try {
         release = Locks.seize_lock(lock);
         ans = queues.dequeue($transcript_queue$.getGlobalValue());
       } finally {
         if ((NIL != release)) {
           Locks.release_lock(lock);
         }
       }
       return ans;
     }
   }
 }