boolean (Exprent first, Exprent second) { if (first.type == Exprent.EXPRENT_INVOCATION) { InvocationExprent invocation = (InvocationExprent)first; if (!invocation.isStatic() && invocation.getInstance().type == Exprent.EXPRENT_VAR && invocation.getName().equals("getClass") && invocation.getStringDescriptor().equals("()Ljava/lang/Class;")) { List<Exprent> lstExprents = second.getAllExprents(); lstExprents.add(second); for (Exprent expr : lstExprents) { if (expr.type == Exprent.EXPRENT_NEW) { NewExprent newExpr = (NewExprent)expr; if (newExpr.getConstructor() != null && !newExpr.getConstructor().getParameters().isEmpty() && newExpr.getConstructor().getParameters().get(0).equals(invocation.getInstance())) { String classname = newExpr.getNewType().getValue(); ClassNode node = DecompilerContext.getClassProcessor().getMapRootClasses().get(classname); if (node != null && node.type != ClassNode.CLASS_ROOT) { return true; } } } } } } return false; }