code: synchronized boolean guessIfShouldMask(final @Nonnull String paramValueClassName) {
          // The only way to find parameter definition/parameter value
          // couples is to reflect the methods of parameter definition
          // classes which instantiate the parameter value.
          // This means that this algorithm expects that the developers do
          // clearly redefine the return type when implementing parameter
          // definitions/values.
          for(String paramDefClassName: maskPasswordsParamDefClasses) {
              final Class<?> paramDefClass;
              try {
                  paramDefClass = Jenkins.getActiveInstance().getPluginManager().uberClassLoader.loadClass(paramDefClassName);
              } catch (ClassNotFoundException ex) {
                  LOGGER.log(Level.WARNING, "Cannot check ParamDef for masking " + paramDefClassName, ex);
                  continue;
              }
  
              tryProcessMethod(paramDefClass, "getDefaultParameterValue", true);
              tryProcessMethod(paramDefClass, "createValue", true, StaplerRequest.class, JSONObject.class);
              tryProcessMethod(paramDefClass, "createValue", true, StaplerRequest.class);
              tryProcessMethod(paramDefClass, "createValue", true, CLICommand.class, String.class);
              // This custom implementation is not a part of the API, but let's try it
              tryProcessMethod(paramDefClass, "createValue", false, String.class);
              
              // If the parameter value class has been added to the cache, exit
              if (paramValueCache_maskedClasses.contains(paramValueClassName)) {
                  return true;
              }
          }
          
          // Always mask the hudson.model.PasswordParameterValue class and its overrides
          // This class does not comply with the criteria above, but it is sensitive starting from 1.378
          final Class<?> valueClass;
          try {
              valueClass = Jenkins.getActiveInstance().getPluginManager().uberClassLoader.loadClass(paramValueClassName);
          } catch (Exception ex) {
              // Move on. Whatever happens here, it will blow up somewhere else
              LOGGER.log(Level.FINE, "Failed to load class for the ParameterValue " + paramValueClassName, ex);
              return false;
          }
          
          return hudson.model.PasswordParameterValue.class.isAssignableFrom(valueClass);
      }
docs: /*package