public interface  io.sundr.builder.Visitable extends java.lang.Object
{
public java.lang.Object accept(java.lang.Class, io.sundr.builder.Visitor)
{
io.sundr.builder.Visitor v;
io.sundr.builder.Visitable$1 v;
io.sundr.builder.Visitor[] v;
java.lang.Class v;
java.lang.Object v;
io.sundr.builder.Visitable v;
v := @this: io.sundr.builder.Visitable;
v := @parameter: java.lang.Class;
v := @parameter: io.sundr.builder.Visitor;
v = newarray (io.sundr.builder.Visitor)[1];
v = new io.sundr.builder.Visitable$1;
specialinvoke v.<io.sundr.builder.Visitable$1: void <init>(io.sundr.builder.Visitable,java.lang.Class,io.sundr.builder.Visitor)>(v, v, v);
v[0] = v;
v = interfaceinvoke v.<io.sundr.builder.Visitable: java.lang.Object accept(io.sundr.builder.Visitor[])>(v);
return v;
}
public transient java.lang.Object accept(io.sundr.builder.Visitor[])
{
io.sundr.builder.Visitor v;
io.sundr.builder.Visitor[] v;
io.sundr.builder.Visitable v;
java.util.List v;
int v, v;
java.lang.Boolean v;
java.lang.Object v;
boolean v;
v := @this: io.sundr.builder.Visitable;
v := @parameter: io.sundr.builder.Visitor[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
v = interfaceinvoke v.<io.sundr.builder.Visitor: java.lang.Boolean canVisit(java.util.List,java.lang.Object)>(v, v);
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
interfaceinvoke v.<io.sundr.builder.Visitor: void visit(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<io.sundr.builder.Visitable: java.lang.Object getTarget(io.sundr.builder.Visitable)>(v);
return v;
}
public transient java.lang.Object accept(java.util.List, java.lang.String, io.sundr.builder.Visitor[])
{
io.sundr.builder.Visitor v;
io.sundr.builder.Visitor[] v;
io.sundr.builder.Visitable v;
java.util.List v;
int v, v;
java.lang.Boolean v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: io.sundr.builder.Visitable;
v := @parameter: java.util.List;
v := @parameter: java.lang.String;
v := @parameter: io.sundr.builder.Visitor[];
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<io.sundr.builder.Visitor: java.lang.Boolean canVisit(java.util.List,java.lang.Object)>(v, v);
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
interfaceinvoke v.<io.sundr.builder.Visitor: void visit(java.util.List,java.lang.Object)>(v, v);
label:
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<io.sundr.builder.Visitable: java.lang.Object getTarget(io.sundr.builder.Visitable)>(v);
return v;
}
public transient java.lang.Object accept(java.util.List, io.sundr.builder.Visitor[])
{
java.util.List v;
io.sundr.builder.Visitor[] v;
java.lang.Object v;
io.sundr.builder.Visitable v;
v := @this: io.sundr.builder.Visitable;
v := @parameter: java.util.List;
v := @parameter: io.sundr.builder.Visitor[];
v = interfaceinvoke v.<io.sundr.builder.Visitable: java.lang.Object accept(java.util.List,java.lang.String,io.sundr.builder.Visitor[])>(v, "", v);
return v;
}
public java.lang.Object getTarget(io.sundr.builder.Visitable)
{
io.sundr.builder.Visitable v, v;
v := @this: io.sundr.builder.Visitable;
v := @parameter: io.sundr.builder.Visitable;
return v;
}
}