| defCase(JCTree.JCExpression, List) |  | 0% |  | 0% | 7 | 7 | 27 | 27 | 1 | 1 |
| collectionType(String) |  | 0% |  | 0% | 3 | 3 | 10 | 10 | 1 | 1 |
| identType(String) |  | 0% |  | 0% | 9 | 9 | 19 | 19 | 1 | 1 |
| defBreak(JCTree.JCLabeledStatement) |  | 0% | | n/a | 1 | 1 | 8 | 8 | 1 | 1 |
| arrayIdentType(String) |  | 0% |  | 0% | 4 | 4 | 10 | 10 | 1 | 1 |
| unwrapProcessingEnv(ProcessingEnvironment) |  | 0% |  | 0% | 5 | 5 | 10 | 10 | 1 | 1 |
| boxed(String) |  | 0% |  | 0% | 9 | 9 | 19 | 19 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, long, int, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| unwrapIntelliJ(ProcessingEnvironment) |  | 0% |  | 0% | 2 | 2 | 9 | 9 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, int, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, long, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, long, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, long, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defMethod(long, Name, JCTree.JCExpression, List, List, List, JCTree.JCBlock, JCTree.JCExpression) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| defClass(long, String, List, JCTree.JCExpression, List, List) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| unwrapGradle(Class, ProcessingEnvironment) |  | 0% |  | 0% | 2 | 2 | 8 | 8 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, int, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defIfReturn(JCTree.JCExpression, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| newClass(JCTree.JCExpression, List, JCTree.JCExpression, List, JCTree.JCClassDecl) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| qualIdent(String) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| arrayType(JCTree.JCExpression, int) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| forLoop(List, JCTree.JCExpression, List, JCTree.JCStatement) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| method(List, JCTree.JCExpression, List) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| method(JCTree.JCIdent, String, long, int, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isEnable(JCTree.JCExpression, JSONWriter.Feature, JSONWriter.Feature, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, String, boolean) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, String, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, String, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defMethod(long, String, JCTree.JCExpression, List, JCTree.JCBlock) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defMethod(long, String, JCTree.JCExpression, List, List, List, JCTree.JCBlock, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, long, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isDisable(JCTree.JCExpression, JSONWriter.Feature, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isEnable(JCTree.JCExpression, JSONWriter.Feature, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, TypeTag, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, String, TypeTag, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, JCTree.JCExpression, JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, JCTree.JCExpression, JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| newArray(JCTree.JCExpression, List, List) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| defVar(long, String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCVariableDecl, String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCVariableDecl, String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| literal(byte) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defSwitch(JCTree.JCExpression, List) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| typeApply(JCTree.JCExpression, List) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| lambda(List, JCTree) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| methodRef(JCTree.JCExpression, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| annotation(JCTree, List) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| ternary(JCTree.JCVariableDecl, int, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, Name, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String, List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(Name, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCVariableDecl, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lt(JCTree.JCVariableDecl, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCVariableDecl, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCVariableDecl, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCVariableDecl, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitAnd(JCTree.JCVariableDecl, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitAnd(JCTree.JCExpression, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| constructorRef(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ternary(JCTree.JCExpression, JCTree.JCExpression, boolean) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ternary(JCTree.JCExpression, int, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ternary(JCTree.JCExpression, long, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isDisable(JCTree.JCExpression, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isEnable(JCTree.JCExpression, JSONWriter.Feature) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| JavacTreeUtils() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| initialize(TreeMaker, Names, Elements) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| defVar(long, String, TypeTag) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, TypeTag) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String, List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCIdent, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| field(JCTree.JCVariableDecl, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| field(Name, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lt(JCTree.JCExpression, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCVariableDecl, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCExpression, JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCExpression, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCExpression, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCVariableDecl, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(Name, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCExpression, int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCExpression, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitAnd(JCTree.JCExpression, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ternary(JCTree.JCVariableDecl, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(long, String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(Name, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| field(JCTree.JCExpression, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| assign(JCTree.JCVariableDecl, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| assign(Name, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defIf(JCTree.JCVariableDecl, JCTree.JCStatement, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defIf(JCTree.JCExpression, JCTree.JCStatement, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defIf(JCTree.JCExpression, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| binary(JCTree.Tag, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| or(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lt(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| eq(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ne(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| and(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitXor(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitAnd(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| bitOr(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| not(JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| literal(int) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| literal(long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| cast(TypeTag, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| label(String, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda(JCTree.JCVariableDecl, JCTree) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ternary(JCTree.JCExpression, JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ident(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ident(JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defVar(String, boolean) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| method(JCTree.JCExpression, List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| field(JCTree.JCExpression, Name) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| assign(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| unary(JCTree.Tag, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| not(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| not(JCTree.JCExpression, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(JCTree.JCMethodInvocation) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(JCTree.JCStatement[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(long, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(long, List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| literal(TypeTag, Object) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| cast(JCTree, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| whileLoop(JCTree.JCExpression, JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| indexed(JCTree.JCExpression, JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defNull() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| name(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ident(Name) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| qualIdent(Class) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| modifiers(long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| exec(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| notNull(JCTree.JCVariableDecl) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| notNull(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(JCTree.JCStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| block(List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| literal(Object) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| type(TypeTag) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| label(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defContinue(JCTree.JCLabeledStatement) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defContinue(Name) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defReturn(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| defReturn() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| parens(JCTree.JCExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| pos(int) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| collectionIdent(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |