code: void setDefaults() {
          // If no ClassLoaders are specified, use the TCCL
          // Ensure we default this BEFORE defaulting the extension loader, as
          // the loader needs a CL to be created
          if (this.getClassLoaders() == null) {
              final ClassLoader tccl = SecurityActions.getThreadContextClassLoader();
              if (log.isLoggable(Level.FINER)) {
                  log.finer("User has not defined an explicit " + ClassLoader.class.getSimpleName()
                      + "; defaulting to the TCCL: " + tccl);
              }
              final Collection<ClassLoader> tcclCollection = new ArrayList<ClassLoader>(1);
              // Adjust for the bootstrap CL, which may be denoted as null in some JVM impls
              if (tccl != null) {
                  tcclCollection.add(tccl);
              } else {
                  tcclCollection.add(ClassLoader.getSystemClassLoader());
              }
              this.classLoaders = tcclCollection;
          }
  
          // Adjust the CLs to be sure of no duplicate or null references (which may indicate
          // the bootstrap CL, so get to the system CL)
          final Collection<ClassLoader> adjustedCls = new HashSet<ClassLoader>();
          for (ClassLoader cl : this.classLoaders) {
  
              // Adjust for null references
              if (cl == null) {
                  cl = ClassLoader.getSystemClassLoader();
              }
  
              // Add to the set, which will restrict duplicates
              adjustedCls.add(cl);
          }
          this.classLoaders = adjustedCls;
  
          // If no extension loader is present, create one
          if (getExtensionLoader() == null) {
              final ExtensionLoader loader = createDefaultExtensionLoader();
              if (log.isLoggable(Level.FINER)) {
                  log.finer("User has not defined an explicit " + ExtensionLoader.class.getSimpleName()
                      + "; defaulting to " + loader);
              }
              this.extensionLoader(loader);
          }
      }
docs: Sets properties to their default values if they haven't been explicitly provided by the user. If no ClassLoaders
  are specified, use the TCCL.