docs: @Trivial
      protected boolean scanClass(ClassSource_Streamer streamer, String className, ScanPolicy scanPolicy)
          throws ClassSource_Exception {
  
          String methodName = "scanClass";
          Object[] logParms;
          if ( tc.isEntryEnabled() ) {
              logParms = new Object[] { getHashText(), className };
              Tr.entry(tc, methodName, MessageFormat.format("[ {0} ] Name [ {1} ]", logParms));
          } else {
              logParms = null;
          }
  
          if ( !streamer.doProcess(className, scanPolicy) ) {
              if ( logParms != null ) {
                  Tr.exit(tc, methodName,
                          MessageFormat.format("[ {0} ] Return [ {1} ] [ false ]: Filtered by streamer", logParms));
              }
              return false;
          }
  
          String resourceName = getResourceNameFromClassName(className);
  
          InputStream inputStream = openResourceStream(className, resourceName); // throws ClassSource_Exception
          if ( inputStream == null ) {
              if ( logParms != null ) {
                  Tr.exit(tc, methodName, MessageFormat.format("[ {0} ] Return [ {1} ] [ false ]: No resource is available", logParms));
              }
              return false;
          }
  
          try {
              streamer.process( getCanonicalName(), className, inputStream, scanPolicy );
          } finally {
              closeResourceStream(className, resourceName, inputStream);
          }
  
          if ( logParms != null ) {
              Tr.exit(tc, methodName, MessageFormat.format("[ {0} ] Return [ {1} ] [ true ]", logParms));
          }
          return true;
      }