code: protected void preprocessArgument(Object arg) {
          if (arg instanceof Type) {
              preprocessType((Type)arg);
          }
          else if (arg instanceof Symbol) {
              preprocessSymbol((Symbol)arg);
          }
          else if (arg instanceof JCDiagnostic) {
              preprocessDiagnostic((JCDiagnostic)arg);
          }
          else if (arg instanceof Iterable<?>) {
              for (Object o : (Iterable<?>)arg) {
                  preprocessArgument(o);
              }
          }
      }
docs: Preprocess a diagnostic argument. A type/symbol argument is
  preprocessed by specialized type/symbol preprocessors.
  
  @param arg the argument to be translated