code: @Trivial
      synchronized void setProvisioningDetails(ProvisioningDetails details) {
          // In general, we want to allow the provisioning details to be completely cleaned up
          // when the provisioning operation is completed.
          // If LibertyFeature service has requested provisioning details, then we need to keep
          // them around until that reference is cleaned up
          if (details == null) {
              if (detailUsers.decrementAndGet() <= 0) {
                  // we are free to clear the details so they can be garbage collected.
                  featureBundles.set(null);
                  mfDetails = null;
              }
          } else {
              // Refresh the reference with whatever is the latest (previous would be garbage collected)
              mfDetails = details;
              detailUsers.incrementAndGet();
          }
      }
docs: Set the provisioning details: used when preparing existing subsystem definition
  for provisioning operation
  
  @param details reconstituted provisioning details