code: private void doExtraction(GatherExtractionInfo info) {
      // Insert a global temp if we are using the USE_GLOBAL_TEMP pattern.
      if (pattern == Pattern.USE_GLOBAL_TEMP) {
        Node injectionPoint = compiler.getNodeForCodeInsertion(null);
  
        Node var = NodeUtil.newVarNode(PROTOTYPE_ALIAS, null)
            .useSourceInfoIfMissingFromForTree(injectionPoint);
  
        injectionPoint.addChildToFront(var);
        compiler.reportChangeToEnclosingScope(var);
      }
      // Go through all extraction instances and extract each of them.
      for (ExtractionInstance instance : info.instances) {
        extractInstance(instance);
      }
    }
docs: Declares the temp variable to point to prototype objects and iterates
  through all ExtractInstance and performs extraction there.