public class org.apache.zookeeper.server.SnapshotComparer extends java.lang.Object
{
private final org.apache.commons.cli.Options options;
private static final java.lang.String leftOption;
private static final java.lang.String rightOption;
private static final java.lang.String byteThresholdOption;
private static final java.lang.String nodeThresholdOption;
private static final java.lang.String debugOption;
private static final java.lang.String interactiveOption;
private void <init>()
{
org.apache.commons.cli.Options v, v, v, v, v, v, v;
org.apache.commons.cli.Option v, v, v, v;
org.apache.zookeeper.server.SnapshotComparer v;
org.apache.commons.cli.Option$Builder v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: org.apache.zookeeper.server.SnapshotComparer;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new org.apache.commons.cli.Options;
specialinvoke v.<org.apache.commons.cli.Options: void <init>()>();
v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options> = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
v = staticinvoke <org.apache.commons.cli.Option: org.apache.commons.cli.Option$Builder builder(java.lang.String)>("l");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder hasArg()>();
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder required(boolean)>(1);
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder longOpt(java.lang.String)>("left");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder desc(java.lang.String)>("(Required) The left snapshot file.");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder argName(java.lang.String)>("LEFT");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder type(java.lang.Class)>(class "Ljava/io/File;");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option build()>();
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(org.apache.commons.cli.Option)>(v);
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
v = staticinvoke <org.apache.commons.cli.Option: org.apache.commons.cli.Option$Builder builder(java.lang.String)>("r");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder hasArg()>();
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder required(boolean)>(1);
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder longOpt(java.lang.String)>("right");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder desc(java.lang.String)>("(Required) The right snapshot file.");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder argName(java.lang.String)>("RIGHT");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder type(java.lang.Class)>(class "Ljava/io/File;");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option build()>();
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(org.apache.commons.cli.Option)>(v);
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
v = staticinvoke <org.apache.commons.cli.Option: org.apache.commons.cli.Option$Builder builder(java.lang.String)>("b");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder hasArg()>();
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder required(boolean)>(1);
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder longOpt(java.lang.String)>("bytes");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder desc(java.lang.String)>("(Required) The node data delta size threshold, in bytes, for printing the node.");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder argName(java.lang.String)>("BYTETHRESHOLD");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder type(java.lang.Class)>(class "Ljava/lang/String;");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option build()>();
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(org.apache.commons.cli.Option)>(v);
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
v = staticinvoke <org.apache.commons.cli.Option: org.apache.commons.cli.Option$Builder builder(java.lang.String)>("n");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder hasArg()>();
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder required(boolean)>(1);
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder longOpt(java.lang.String)>("nodes");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder desc(java.lang.String)>("(Required) The descendant node delta size threshold, in nodes, for printing the node.");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder argName(java.lang.String)>("NODETHRESHOLD");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option$Builder type(java.lang.Class)>(class "Ljava/lang/String;");
v = virtualinvoke v.<org.apache.commons.cli.Option$Builder: org.apache.commons.cli.Option build()>();
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(org.apache.commons.cli.Option)>(v);
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(java.lang.String,java.lang.String,boolean,java.lang.String)>("d", "debug", 0, "Use debug output.");
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
virtualinvoke v.<org.apache.commons.cli.Options: org.apache.commons.cli.Options addOption(java.lang.String,java.lang.String,boolean,java.lang.String)>("i", "interactive", 0, "Enter interactive mode.");
return;
}
private void usage()
{
org.apache.zookeeper.server.SnapshotComparer v;
org.apache.commons.cli.Options v;
java.lang.Class v;
java.lang.String v, v;
org.apache.commons.cli.HelpFormatter v;
v := @this: org.apache.zookeeper.server.SnapshotComparer;
v = new org.apache.commons.cli.HelpFormatter;
specialinvoke v.<org.apache.commons.cli.HelpFormatter: void <init>()>();
v = class "Lorg/apache/zookeeper/server/SnapshotComparer;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("java -cp <classPath> \u0001");
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
virtualinvoke v.<org.apache.commons.cli.HelpFormatter: void printHelp(int,java.lang.String,java.lang.String,org.apache.commons.cli.Options,java.lang.String)>(120, v, "", v, "");
return;
}
public static void main(java.lang.String[]) throws java.lang.Exception
{
java.lang.String[] v;
org.apache.zookeeper.server.SnapshotComparer v;
v := @parameter: java.lang.String[];
v = new org.apache.zookeeper.server.SnapshotComparer;
specialinvoke v.<org.apache.zookeeper.server.SnapshotComparer: void <init>()>();
specialinvoke v.<org.apache.zookeeper.server.SnapshotComparer: void compareSnapshots(java.lang.String[])>(v);
return;
}
private void compareSnapshots(java.lang.String[]) throws java.lang.Exception
{
java.lang.Throwable v;
org.apache.commons.cli.Options v;
java.lang.String[] v;
org.apache.commons.cli.DefaultParser v;
int v, v, v;
org.apache.commons.cli.CommandLine v;
java.lang.String v, v, v;
boolean v, v;
java.io.PrintStream v, v, v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo v, v;
org.apache.zookeeper.server.SnapshotComparer v;
org.apache.zookeeper.server.ExitCode v;
java.lang.Object v, v, v, v;
v := @this: org.apache.zookeeper.server.SnapshotComparer;
v := @parameter: java.lang.String[];
label:
v = new org.apache.commons.cli.DefaultParser;
specialinvoke v.<org.apache.commons.cli.DefaultParser: void <init>()>();
v = v.<org.apache.zookeeper.server.SnapshotComparer: org.apache.commons.cli.Options options>;
v = virtualinvoke v.<org.apache.commons.cli.DefaultParser: org.apache.commons.cli.CommandLine parse(org.apache.commons.cli.Options,java.lang.String[])>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <java.lang.System: java.io.PrintStream err>;
v = virtualinvoke v.<org.apache.commons.cli.ParseException: java.lang.String getMessage()>();
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
specialinvoke v.<org.apache.zookeeper.server.SnapshotComparer: void usage()>();
v = <org.apache.zookeeper.server.ExitCode: org.apache.zookeeper.server.ExitCode INVALID_INVOCATION>;
v = virtualinvoke v.<org.apache.zookeeper.server.ExitCode: int getValue()>();
staticinvoke <org.apache.zookeeper.util.ServiceUtils: void requestSystemExit(int)>(v);
return;
label:
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: java.lang.Object getParsedOptionValue(java.lang.String)>("left");
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: java.lang.Object getParsedOptionValue(java.lang.String)>("right");
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: java.lang.Object getParsedOptionValue(java.lang.String)>("bytes");
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: java.lang.Object getParsedOptionValue(java.lang.String)>("nodes");
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: boolean hasOption(java.lang.String)>("debug");
v = virtualinvoke v.<org.apache.commons.cli.CommandLine: boolean hasOption(java.lang.String)>("interactive");
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("Successfully parsed options!");
v = new org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
specialinvoke v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: void <init>(java.io.File)>(v);
v = new org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
specialinvoke v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: void <init>(java.io.File)>(v);
v = <java.lang.System: java.io.PrintStream out>;
v = virtualinvoke v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.lang.String toString()>();
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
v = <java.lang.System: java.io.PrintStream out>;
v = virtualinvoke v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.lang.String toString()>();
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareTrees(org.apache.zookeeper.server.SnapshotComparer$TreeInfo,org.apache.zookeeper.server.SnapshotComparer$TreeInfo,int,int,boolean,boolean)>(v, v, v, v, v, v);
return;
catch org.apache.commons.cli.ParseException from label to label with label;
}
private static org.apache.zookeeper.server.DataTree getSnapshot(java.io.File) throws java.lang.Exception
{
java.io.PrintStream v;
java.util.zip.CheckedInputStream v;
java.lang.Object[] v;
java.lang.Double v;
java.util.HashMap v;
long v, v, v;
java.io.File v;
org.apache.jute.BinaryInputArchive v;
org.apache.zookeeper.server.DataTree v;
java.lang.String v, v;
double v, v;
v := @parameter: java.io.File;
v = new org.apache.zookeeper.server.DataTree;
specialinvoke v.<org.apache.zookeeper.server.DataTree: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = staticinvoke <org.apache.zookeeper.server.persistence.SnapStream: java.util.zip.CheckedInputStream getInputStream(java.io.File)>(v);
v = staticinvoke <java.lang.System: long nanoTime()>();
v = staticinvoke <org.apache.jute.BinaryInputArchive: org.apache.jute.BinaryInputArchive getArchive(java.io.InputStream)>(v);
staticinvoke <org.apache.zookeeper.server.persistence.FileSnap: void deserialize(org.apache.zookeeper.server.DataTree,java.util.Map,org.apache.jute.InputArchive)>(v, v, v);
v = staticinvoke <java.lang.System: long nanoTime()>();
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.io.File: java.lang.String getName()>();
v[0] = v;
v = v - v;
v = v / 1000000.0;
v = v / 1000.0;
v = staticinvoke <java.lang.Double: java.lang.Double valueOf(double)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Deserialized snapshot in %s in %f seconds", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
return v;
}
private static void printThresholdInfo(int, int)
{
java.io.PrintStream v;
java.lang.Object[] v;
int v, v;
java.lang.String v;
java.lang.Integer v, v;
v := @parameter: int;
v := @parameter: int;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Printing analysis for nodes difference larger than %d bytes or node count difference larger than %d.", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
return;
}
private static void compareTrees(org.apache.zookeeper.server.SnapshotComparer$TreeInfo, org.apache.zookeeper.server.SnapshotComparer$TreeInfo, int, int, boolean, boolean)
{
java.util.Scanner v;
java.lang.Integer v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.util.List v, v;
java.lang.Object[] v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
java.io.PrintStream v, v, v, v, v, v, v, v, v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo v, v;
java.lang.NumberFormatException v;
java.io.InputStream v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = staticinvoke <java.lang.Math: int max(int,int)>(v, v);
if v != 0 goto label;
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printThresholdInfo(int,int)>(v, v);
v = 0;
label:
if v >= v goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Analysis for depth %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareLine(org.apache.zookeeper.server.SnapshotComparer$TreeInfo,org.apache.zookeeper.server.SnapshotComparer$TreeInfo,int,int,int,boolean,boolean)>(v, v, v, v, v, v, v);
v = v + 1;
goto label;
label:
v = new java.util.Scanner;
v = <java.lang.System: java.io.InputStream in>;
specialinvoke v.<java.util.Scanner: void <init>(java.io.InputStream)>(v);
v = 0;
label:
if v >= v goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Current depth is %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("- Press enter to move to print current depth layer;\n- Type a number to jump to and print all nodes at a given depth;\n- Enter an ABSOLUTE path to print the immediate subtree of a node. Path must start with \'/\'.");
v = virtualinvoke v.<java.util.Scanner: java.lang.String nextLine()>();
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printThresholdInfo(int,int)>(v, v);
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Analysis for depth %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareLine(org.apache.zookeeper.server.SnapshotComparer$TreeInfo,org.apache.zookeeper.server.SnapshotComparer$TreeInfo,int,int,int,boolean,boolean)>(v, v, v, v, v, v, v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("/");
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Analysis for node %s", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareSubtree(org.apache.zookeeper.server.SnapshotComparer$TreeInfo,org.apache.zookeeper.server.SnapshotComparer$TreeInfo,java.lang.String,int,int,boolean,boolean)>(v, v, v, v, v, v, v);
goto label;
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v < 0 goto label;
if v < v goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
v[0] = v;
v = v - 1;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Depth must be in range [%d, %d]", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
goto label;
label:
v = v;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Analysis for depth %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareLine(org.apache.zookeeper.server.SnapshotComparer$TreeInfo,org.apache.zookeeper.server.SnapshotComparer$TreeInfo,int,int,int,boolean,boolean)>(v, v, v, v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(0);
v[1] = v;
v = v - 1;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Input %s is not valid. Depth must be in range [%d, %d]. Path must be an absolute path which starts with \'/\'.", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("");
goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("All layers compared.");
return;
catch java.lang.NumberFormatException from label to label with label;
catch java.lang.NumberFormatException from label to label with label;
}
private static void compareSubtree(org.apache.zookeeper.server.SnapshotComparer$TreeInfo, org.apache.zookeeper.server.SnapshotComparer$TreeInfo, java.lang.String, int, int, boolean, boolean)
{
java.lang.Object[] v;
java.util.ArrayList v, v;
java.util.Map v, v;
int v, v;
java.lang.String v, v;
boolean v, v;
java.io.PrintStream v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo v, v;
java.util.List v, v, v, v;
java.lang.Object v, v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.Map nodesByName>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.Map nodesByName>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.util.ArrayList;
v = v;
specialinvoke v.<java.util.ArrayList: void <init>()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.util.List children>;
label:
v = v;
if v != null goto label;
v = new java.util.ArrayList;
v = v;
specialinvoke v.<java.util.ArrayList: void <init>()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.util.List children>;
label:
v = v;
if v != null goto label;
if v != null goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Path %s is neither found in left tree nor right tree.", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
goto label;
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareNodes(java.util.List,java.util.List,int,int,boolean,boolean)>(v, v, v, v, v, v);
label:
return;
}
private static void compareLine(org.apache.zookeeper.server.SnapshotComparer$TreeInfo, org.apache.zookeeper.server.SnapshotComparer$TreeInfo, int, int, int, boolean, boolean)
{
java.util.ArrayList v, v;
int v, v, v, v, v;
boolean v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo v, v;
java.util.List v, v, v, v;
java.lang.Object v, v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: int size()>();
if v < v goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: int size()>();
if v < v goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
goto label;
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.List nodesAtDepths>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void compareNodes(java.util.List,java.util.List,int,int,boolean,boolean)>(v, v, v, v, v, v);
return;
}
private static void compareNodes(java.util.List, java.util.List, int, int, boolean, boolean)
{
boolean v, v, v, v, v, v, v, v;
java.util.List v, v;
java.lang.Object[] v;
int v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v;
java.io.PrintStream v, v, v, v;
java.lang.Object v, v;
java.util.Comparator v;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = staticinvoke <org.apache.zookeeper.server.SnapshotComparer$TreeInfo: java.util.Comparator MakeAlphabeticComparator()>();
staticinvoke <java.util.Collections: void sort(java.util.List,java.util.Comparator)>(v, v);
staticinvoke <java.util.Collections: void sort(java.util.List,java.util.Comparator)>(v, v);
v = 0;
v = 0;
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
label:
if v != 0 goto label;
if v == 0 goto label;
label:
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
label:
if v == 0 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
label:
if v == null goto label;
if v == null goto label;
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Comparing %s to %s", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v = virtualinvoke v.<java.lang.String: int compareTo(java.lang.String)>(v);
if v >= 0 goto label;
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("left is less");
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printLeftOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,int,int,boolean,boolean)>(v, v, v, v, v);
v = v + 1;
goto label;
label:
if v <= 0 goto label;
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("right is less");
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printRightOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,int,int,boolean,boolean)>(v, v, v, v, v);
v = v + 1;
goto label;
label:
if v == 0 goto label;
v = <java.lang.System: java.io.PrintStream out>;
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>("same");
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printBoth(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,int,int,boolean,boolean)>(v, v, v, v, v, v);
v = v + 1;
v = v + 1;
goto label;
label:
if v == null goto label;
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printLeftOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,int,int,boolean,boolean)>(v, v, v, v, v);
v = v + 1;
goto label;
label:
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printRightOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,int,int,boolean,boolean)>(v, v, v, v, v);
v = v + 1;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
goto label;
label:
return;
}
static void printLeftOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode, int, int, boolean, boolean)
{
java.lang.Object[] v, v;
long v, v, v;
byte v, v;
java.lang.Long v;
int v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode v;
java.lang.String v, v, v, v, v;
boolean v, v;
java.io.PrintStream v, v;
java.lang.StringBuilder v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v cmp v;
if v > 0 goto label;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v cmp v;
if v <= 0 goto label;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = newarray (java.lang.Object)[1];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Node %s found only in left tree. ", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printNode(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,java.lang.StringBuilder)>(v, v);
v = <java.lang.System: java.io.PrintStream out>;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
goto label;
label:
if v != 0 goto label;
if v == 0 goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Filtered left node %s of size %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
return;
}
static void printRightOnly(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode, int, int, boolean, boolean)
{
java.lang.Object[] v, v;
long v, v, v;
byte v, v;
java.lang.Long v;
int v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode v;
java.lang.String v, v, v, v, v;
boolean v, v;
java.io.PrintStream v, v;
java.lang.StringBuilder v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v cmp v;
if v > 0 goto label;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v cmp v;
if v <= 0 goto label;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = newarray (java.lang.Object)[1];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Node %s found only in right tree. ", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
staticinvoke <org.apache.zookeeper.server.SnapshotComparer: void printNode(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode,java.lang.StringBuilder)>(v, v);
v = <java.lang.System: java.io.PrintStream out>;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
goto label;
label:
if v != 0 goto label;
if v == 0 goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[2];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Filtered right node %s of size %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
return;
}
static void printBoth(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode, org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode, int, int, boolean, boolean)
{
byte v, v;
java.lang.Long v, v, v, v;
boolean v, v;
java.lang.Object[] v, v;
long v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
int v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode v, v;
java.lang.String v, v, v, v;
java.io.PrintStream v, v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v - v;
v = staticinvoke <java.lang.Math: long abs(long)>(v);
v = v cmp v;
if v > 0 goto label;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v - v;
v = staticinvoke <java.lang.Math: long abs(long)>(v);
v = v cmp v;
if v <= 0 goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = v - v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Node %s found in both trees. Delta: %d bytes, %d descendants", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
goto label;
label:
if v != 0 goto label;
if v == 0 goto label;
label:
v = <java.lang.System: java.io.PrintStream out>;
v = newarray (java.lang.Object)[3];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: java.lang.String label>;
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Filtered node %s of left size %d, right size %d", v);
virtualinvoke v.<java.io.PrintStream: void println(java.lang.String)>(v);
label:
return;
}
static void printNode(org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode, java.lang.StringBuilder)
{
java.lang.Object[] v;
long v, v;
java.lang.Long v, v;
org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode v;
java.lang.StringBuilder v;
java.lang.String v;
v := @parameter: org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode;
v := @parameter: java.lang.StringBuilder;
v = newarray (java.lang.Object)[2];
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantSize>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[0] = v;
v = v.<org.apache.zookeeper.server.SnapshotComparer$TreeInfo$TreeNode: long descendantCount>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Descendant size: %d. Descendant count: %d", v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
return;
}
}