code: public boolean isApplicable(Class<? extends Job> jobType) {
          Type parameterization = Types.getBaseClass(clazz, JobProperty.class);
          if (parameterization instanceof ParameterizedType) {
              ParameterizedType pt = (ParameterizedType) parameterization;
              Class applicable = Types.erasure(Types.getTypeArgument(pt, 0));
              return applicable.isAssignableFrom(jobType);
          } else {
              throw new AssertionError(clazz+" doesn't properly parameterize JobProperty. The isApplicable() method must be overridden.");
          }
      }
docs: Returns true if this {@link JobProperty} type is applicable to the
  given job type.
  
  <p>
  The default implementation of this method checks if the given job type is assignable to {@code J} of
  {@link JobProperty}{@code <J>}, but subtypes can extend this to change this behavior.
  
  @return
  true to indicate applicable, in which case the property will be
  displayed in the configuration screen of this job.