title: How to get a reference to Modifier.PUBLIC that can not be applied in builder in MethodSpec's methodBuilder for JavaPoet
body: <p>Attempting to implement the basic JavaPoet example (see below) in a Android ActivityWatcher class from LeakCanary:</p>
  
  <pre><code>.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
  </code></pre>
  
  <p>The Modifier.PUBLIC and Modifier.STATIC, and the other .addModifiers statement  produce the Android Studio error </p>
  
  <blockquote>
    <p>addModifiers (javax.lang.model.element.modifier...) in Builder can not be applied to (int, int)</p>
  </blockquote>
  
  <p>and the following gradle error: </p>
  
  <pre><code>:Machine-android:compileDebugJava
  </code></pre>
  
  <p>C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:58: error: cannot access Modifier
                .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
                ^
    class file for javax.lang.model.element.Modifier not found
  C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:65: error: method addModifiers in class Builder cannot be applied to given types;
                .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
                ^
    required: Modifier[]
    found: int,int
    reason: varargs mismatch; int cannot be converted to Modifier
  C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:73: error: cannot access Filer
            javaFile.writeTo(System.out);
                    ^
    class file for javax.annotation.processing.Filer not found
  C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:172: error: method addModifiers in class Builder cannot be applied to given types;
                .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
                ^
    required: Modifier[]
    found: int,int
    reason: varargs mismatch; int cannot be converted to Modifier
  C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:179: error: method addModifiers in class Builder cannot be applied to given types;
                .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
                ^
    required: Modifier[]
    found: int,int
    reason: varargs mismatch; int cannot be converted to Modifier
  C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\ActivityWatcher.java:187: error: cannot access Path
            javaFile.writeTo(System.out);
                    ^
    class file for java.nio.file.Path not found
  Note: C:\AAAMachine\Machine-master\Machine-android\src\main\java\com\bmp\internal\MachineInternals.java uses or overrides a deprecated API.
  Note: Recompile with -Xlint:deprecation for details.
  Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
  6 errors</p>
  
  <p>FAILED</p>
  
  <p>FAILURE: Build failed with an exception.</p>
  
  <ul>
  <li><p>What went wrong:
  Execution failed for task ':Machine-android:compileDebugJava'.</p>
  
  <blockquote>
    <p>Compilation failed; see the compiler error output for details.</p>
  </blockquote></li>
  <li><p>Try:
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.</p></li>
  </ul>
  
  <p>BUILD FAILED</p>
  
  <p>Total time: 6.881 secs</p>
  
  <p>and here's the error from messages:</p>
  
  <pre><code>:machine-android:compileDebugJava
  </code></pre>
  
  <p>C:\AAAmachine\machine-master\machine-android\src\main\java\com\bmp\ActivityWatcher.java
  Error:(58, 15) error: cannot access Modifier
  class file for javax.lang.model.element.Modifier not found
  Error:(65, 15) error: method addModifiers in class Builder cannot be applied to given types;
  required: Modifier[]
  found: int,int
  reason: varargs mismatch; int cannot be converted to Modifier
  Error:(73, 19) error: cannot access Filer
  class file for javax.annotation.processing.Filer not found
  Error:(172, 15) error: method addModifiers in class Builder cannot be applied to given types;
  required: Modifier[]
  found: int,int
  reason: varargs mismatch; int cannot be converted to Modifier
  Error:(179, 15) error: method addModifiers in class Builder cannot be applied to given types;
  required: Modifier[]
  found: int,int
  reason: varargs mismatch; int cannot be converted to Modifier
  Error:(187, 19) error: cannot access Path
  class file for java.nio.file.Path not found
  Note: C:\AAAmachine\machine-master\machine-android\src\main\java\com\bmp\internal\machineInternals.java uses or overrides a deprecated API.
  Note: Recompile with -Xlint:deprecation for details.
  Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
  Error:Execution failed for task ':machine-android:compileDebugJava'.</p>
  
  <blockquote>
    <p>Compilation failed; see the compiler error output for details.
    Information:BUILD FAILED
    Information:Total time: 6.881 secs
    Information:7 errors
    Information:0 warnings
    Information:See complete output in console</p>
  </blockquote>
  
  <p>Here's the gist of the source code using the basic example from the readme.md file from JavaPoet:</p>
  
  <pre><code>package com.bmp;
  
  import android.annotation.TargetApi;
  import android.app.Activity;
  import android.app.Application;
  import android.content.Context;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.preference.PreferenceManager;
  import android.util.Log;
  import android.view.ViewGroup;
  
  import com.bmp.util.eventbus.FabricLogEvent;
  import com.squareup.javapoet.JavaFile;
  import com.squareup.javapoet.MethodSpec;
  import com.squareup.javapoet.TypeSpec;
  
  import java.io.File;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.lang.reflect.Modifier;
  
  import de.greenrobot.event.EventBus;
  
  import static android.os.Build.VERSION.SDK_INT;
  import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
  import static com.bmp.Preconditions.checkNotNull;
  
  
  
  @TargetApi(ICE_CREAM_SANDWICH) public final class ActivityWatcher {
  
      public static void installOnIcsPlus(Application application, RefWatcher refWatcher) {
          if (SDK_INT &lt; ICE_CREAM_SANDWICH) {
            // If you need to support Android &lt; ICS, override onDestroy() in your base activity.
            return;
          }
  
      ActivityWatcher activityWatcher = new ActivityWatcher(application, refWatcher);
      activityWatcher.watchActivities();
  
      MethodSpec main = MethodSpec.methodBuilder("main")
              .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
              .returns(void.class)
              .addParameter(String[].class, "args")
              .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
              .build();
  
      TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
              .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
              .addMethod(main)
              .build();
  
      JavaFile javaFile = JavaFile.builder("com.bmp.helloworld", helloWorld)
              .build();
  
      try {
          javaFile.writeTo(System.out);
      } catch (IOException e) {
          e.printStackTrace();
      }
  
      FileWriter fileWriter = null;
      try {
          fileWriter = new FileWriter(new File("com.bmp.newclass.java"));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
  </code></pre>
  
  <p>Could it be related to the physical file name to be written?</p>