docs: public static MemberExistsResult methodExists(String methodName, JavacNode node, boolean caseSensitive, int params) {
  		node = upToTypeNode(node);
  		
  		if (node != null && node.get() instanceof JCClassDecl) {
  			top: for (JCTree def : ((JCClassDecl)node.get()).defs) {
  				if (def instanceof JCMethodDecl) {
  					JCMethodDecl md = (JCMethodDecl) def;
  					String name = md.name.toString();
  					boolean matches = caseSensitive ? name.equals(methodName) : name.equalsIgnoreCase(methodName);
  					if (matches) {
  						if (params > -1) {
  							List<JCVariableDecl> ps = md.params;
  							int minArgs = 0;
  							int maxArgs = 0;
  							if (ps != null && ps.length() > 0) {
  								minArgs = ps.length();
  								if ((ps.last().mods.flags & Flags.VARARGS) != 0) {
  									maxArgs = Integer.MAX_VALUE;
  									minArgs--;
  								} else {
  									maxArgs = minArgs;
  								}
  							}
  							
  							if (params < minArgs || params > maxArgs) continue;
  						}
  						
  						if (isTolerate(node, md)) continue top;
  						
  						return getGeneratedBy(def) == null ? MemberExistsResult.EXISTS_BY_USER : MemberExistsResult.EXISTS_BY_LOMBOK;
  					}
  				}
  			}
  		}
  		
  		return MemberExistsResult.NOT_EXISTS;
  	}