title: Proguard - Can't find common super class / java.lang.VerifyError
body: <p>We are developing a desktop application. When running ProGuard (version 5.3.3) on the code using the following configuration flags:</p>
  
  <pre><code>-dontoptimize
  -allowaccessmodification
  -dontusemixedcaseclassnames
  -dontwarn
  </code></pre>
  
  <p>Proguard gives the following error:</p>
  
  <pre><code>Unexpected error while performing partial evaluation:
    Class       = [com/code/backend/e/b/b]
    Method      = [b(Ljava/lang/String;)Ljava/nio/file/Path;]
    Exception   = [java.lang.IllegalArgumentException] (Can't find common super class of [com/google/common/collect/ImmutableList] (with 2 known super classes) and [com/google/common/collect/UnmodifiableIterator] (with 1 known super classes))
  Unexpected error while preverifying:
    Class       = [com/code/backend/e/b/b]
    Method      = [b(Ljava/lang/String;)Ljava/nio/file/Path;]
    Exception   = [java.lang.IllegalArgumentException] (Can't find common super class of [com/google/common/collect/ImmutableList] (with 2 known super classes) and [com/google/common/collect/UnmodifiableIterator] (with 1 known super classes))
  
  
  FAILURE: Build failed with an exception.
  
  * What went wrong:
  Execution failed for task 'proguard'.
  &gt; Can't find common super class of [com/google/common/collect/ImmutableList] (with 2 known super classes) and [com/google/common/collect/UnmodifiableIterator] (with 1 known super classes)
  </code></pre>
  
  <p>If the flag -dontpreverify is added to the configuration the build will succeed. However when running the jar-file we then get the following error:</p>
  
  <pre><code>Error: A JNI error has occurred, please check your installation and try again
  Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 11
  Exception Details:
    Location:
      com/code/code2/MainWindow.b(Lcom/code/code2/ClientAPIProtos$SoftwareStatus;)V @1: ifnull
    Reason:
      Expected stackmap frame at this location.
    Bytecode:
      0x0000000: 2bc6 000a 2ab4 00bc c700 04b1 2bb2 00a4
      0x0000010: a500 0a2b b800 f599 0018 2ab4 00bc b601
      0x0000020: 9299 0020 2ab4 00bc 03b6 0193 a700 152a
      0x0000030: b400 bcb6 0192 9a00 0b2a b400 bc04 b601
      0x0000040: 932b b800 f699 0012 1225 4db8 0138 4e2a
      0x0000050: 04b5 00c8 a700 0f12 1e4d b801 3a4e 2a03
      0x0000060: b500 c82a b400 bcb6 0191 3a04 1904 c600
      0x0000070: 0c2c 1904 b601 799a 000b 2ab4 00bc 2cb6
      0x0000080: 0195 2ab4 00bc b601 903a 0519 05c6 0009
      0x0000090: 2d19 05a5 000b 2ab4 00bc 2db6 0194 b1  
  
      at java.lang.Class.getDeclaredMethods0(Native Method)
      at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
      at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
      at java.lang.Class.getMethod0(Class.java:3018)
      at java.lang.Class.getMethod(Class.java:1784)
      at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
      at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
  </code></pre>
  
  <p>Which can be avoided by using the JVM flag -noverify. Reading the thread:</p>
  
  <p><a href="https://stackoverflow.com/questions/19928927/obfuscation-causes-verifyerror-expecting-a-stackmap-frame">Obfuscation causes VerifyError: Expecting a stackmap frame</a></p>
  
  <p>We would like to avoid these 'no verification' flags if possible. </p>
  
  <p>Note: The build error occurs even when adding </p>
  
  <pre><code>-dontobfuscate
  -dontshrink
  </code></pre>