public static boolean isJavaLikeButNotGroovyLikeExtension(String fileName) {
    if (JAVA_LIKE_BUT_NOT_GROOVY_LIKE_EXTENSIONS == null) {
      initJavaLikeButNotGroovyLikeExtensions();
    }

    int fileNameLength = fileName.length();
    extensions:
    for (int i = 0, length = JAVA_LIKE_BUT_NOT_GROOVY_LIKE_EXTENSIONS.length; i < length; i++) {
      char[] extension = JAVA_LIKE_BUT_NOT_GROOVY_LIKE_EXTENSIONS[i];
      int extensionLength = extension.length;
      int extensionStart = fileNameLength - extensionLength;
      int dotIndex = extensionStart - 1;
      if (dotIndex < 0) continue;
      if (fileName.charAt(dotIndex) != '.') continue;
      for (int j = 0; j < extensionLength; j++) {
        if (fileName.charAt(extensionStart + j) != extension[j]) continue extensions;
      }
      return true;
    }

    return false;
  }
 public static char[][] getJavaButNotGroovyLikeExtensions() {
   if (JAVA_LIKE_BUT_NOT_GROOVY_LIKE_EXTENSIONS == null) {
     initJavaLikeButNotGroovyLikeExtensions();
   }
   return JAVA_LIKE_BUT_NOT_GROOVY_LIKE_EXTENSIONS;
 }