From 11110b3f6e8f1fed76456a6f9e9417a407ac3cc9 Mon Sep 17 00:00:00 2001 From: ursa Date: Mon, 29 Sep 2025 16:35:37 +0100 Subject: [PATCH 1/4] Plugin generates corrupted shaded sources beyond recognition #759 --- .../shade/relocation/SimpleRelocator.java | 4 +- .../shade/relocation/SimpleRelocatorTest.java | 48 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java index 9d49f77ab..51a63da2c 100644 --- a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java +++ b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java @@ -34,7 +34,7 @@ public class SimpleRelocator implements Relocator { /** * Match dot, slash or space at end of string */ - private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = Pattern.compile("[./ ]$"); + private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = Pattern.compile("(\\.|/|[^ @@ -46,7 +46,7 @@ public class SimpleRelocator implements Relocator { * at end of string */ private static final Pattern RX_ENDS_WITH_JAVA_KEYWORD = Pattern.compile( - "\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile|extends|implements|throws) $" + "\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile|extends|implements|instanceof|throws|throw|return|new|case) $" + "|" + "\\{@link( \\*)* $" + "|" diff --git a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java index 9f7c29d48..3d70e017c 100644 --- a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java @@ -208,6 +208,30 @@ public void testRelocateMavenFiles() { + " /** Javadoc, followed by default visibility method with fully qualified return type */\n" + " org.apache.maven.MyReturnType doSomething( org.apache.maven.Bar bar, org.objectweb.asm.sub.Something something) {\n" + " org.apache.maven.Bar bar;\n" + + " Map map1;\n" + + " Map< org.apache.maven.Key, org.apache.maven.Value > map2;\n" + + " throw org.apache.maven.Error.newError();\n" + + " throw new org.apache.maven.Error();\n" + + " boolean flag1 = bar instanceof org.apache.maven.Bar;\n" + + " boolean flag2 = org.apache.maven.Utils.yes() ? org.apache.maven.Utils.one() : org.apache.maven.Utils.zero();\n" + + " boolean flag3 = org.apache.maven.Utils.yes() || org.apache.maven.Utils.no();\n" + + " boolean flag4 = org.apache.maven.Utils.yes() && org.apache.maven.Utils.no();\n" + + " boolean flag5 = org.apache.maven.Utils.yes() ^^ org.apache.maven.Utils.no();\n" + + " int value1 = org.apache.maven.Utils.x() + org.apache.maven.Utils.y()\n" + + " int value2 = org.apache.maven.Utils.x() - org.apache.maven.Utils.y()\n" + + " int value3 = org.apache.maven.Utils.x() * org.apache.maven.Utils.y()\n" + + " int value4 = org.apache.maven.Utils.x() / org.apache.maven.Utils.y()\n" + + " int value5 = org.apache.maven.Utils.one() | org.apache.maven.Utils.two()\n" + + " int value6 = org.apache.maven.Utils.one() & org.apache.maven.Utils.two()\n" + + " int value7 = org.apache.maven.Utils.one() ^ org.apache.maven.Utils.two()\n" + + " switch (org.apache.maven.Utils.getValue()) {\n" + + " case org.apache.maven.Utils.STATIC_VALUE:\n" + + " org.apache.maven.Utils.info(\"known value\"):\n" + + " break;\n" + + " default:\n" + + " org.apache.maven.Utils.warn(\"unknown value\"):\n" + + " break;\n" + + " }\n" + " org.objectweb.asm.sub.Something something;\n" + " String io, val;\n" + " String noRelocation = \"NoWordBoundaryXXXorg.apache.maven.In\";\n" @@ -241,6 +265,30 @@ public void testRelocateMavenFiles() { + " /** Javadoc, followed by default visibility method with fully qualified return type */\n" + " com.acme.maven.MyReturnType doSomething( com.acme.maven.Bar bar, aj.org.objectweb.asm.sub.Something something) {\n" + " com.acme.maven.Bar bar;\n" + + " Map map1;\n" + + " Map< com.acme.maven.Key, com.acme.maven.Value > map2;\n" + + " throw com.acme.maven.Error.newError();\n" + + " throw new com.acme.maven.Error();\n" + + " boolean flag1 = bar instanceof com.acme.maven.Bar;\n" + + " boolean flag2 = com.acme.maven.Utils.yes() ? com.acme.maven.Utils.one() : com.acme.maven.Utils.zero();\n" + + " boolean flag3 = com.acme.maven.Utils.yes() || com.acme.maven.Utils.no();\n" + + " boolean flag4 = com.acme.maven.Utils.yes() && com.acme.maven.Utils.no();\n" + + " boolean flag5 = com.acme.maven.Utils.yes() ^^ com.acme.maven.Utils.no();\n" + + " int value1 = com.acme.maven.Utils.x() + com.acme.maven.Utils.y()\n" + + " int value2 = com.acme.maven.Utils.x() - com.acme.maven.Utils.y()\n" + + " int value3 = com.acme.maven.Utils.x() * com.acme.maven.Utils.y()\n" + + " int value4 = com.acme.maven.Utils.x() / com.acme.maven.Utils.y()\n" + + " int value5 = com.acme.maven.Utils.one() | com.acme.maven.Utils.two()\n" + + " int value6 = com.acme.maven.Utils.one() & com.acme.maven.Utils.two()\n" + + " int value7 = com.acme.maven.Utils.one() ^ com.acme.maven.Utils.two()\n" + + " switch (com.acme.maven.Utils.getValue()) {\n" + + " case com.acme.maven.Utils.STATIC_VALUE:\n" + + " com.acme.maven.Utils.info(\"known value\"):\n" + + " break;\n" + + " default:\n" + + " com.acme.maven.Utils.warn(\"unknown value\"):\n" + + " break;\n" + + " }\n" + " aj.org.objectweb.asm.sub.Something something;\n" + " String io, val;\n" + " String noRelocation = \"NoWordBoundaryXXXorg.apache.maven.In\";\n" From 19781e95d4f216f001bd4e03ace1359eb6991ccb Mon Sep 17 00:00:00 2001 From: ursa Date: Fri, 1 May 2026 00:15:14 +0100 Subject: [PATCH 2/4] Plugin generates corrupted shaded sources beyond recognition #759 --- .../maven/plugins/shade/relocation/SimpleRelocator.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java index 51a63da2c..ce52b30e5 100644 --- a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java +++ b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java @@ -32,7 +32,11 @@ */ public class SimpleRelocator implements Relocator { /** - * Match dot, slash or space at end of string + * Matches
    + *
  • either dot,
  • + *
  • or slash,
  • + *
  • or space at the end of a string, where string does NOT end with operator (generic type, binary, trinary).
  • + *
*/ private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = Pattern.compile("(\\.|/|[^ Date: Tue, 25 Aug 2026 23:42:07 +0100 Subject: [PATCH 3/4] Plugin generates corrupted shaded sources beyond recognition #759 (review comments fixes) --- .../shade/relocation/SimpleRelocator.java | 4 +- .../shade/relocation/SimpleRelocatorTest.java | 42 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java index ce52b30e5..ae416efe3 100644 --- a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java +++ b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java @@ -38,7 +38,7 @@ public class SimpleRelocator implements Relocator { *
  • or space at the end of a string, where string does NOT end with operator (generic type, binary, trinary).
  • * */ - private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = Pattern.compile("(\\.|/|[^?:+\\-*/^|&] )$"); /** * Match
      @@ -247,7 +247,7 @@ private String shadeSourceWithExcludes( isFirstSnippet = false; } else { String previousSnippetOneLine = previousSnippet.replaceAll("\\s+", " "); - boolean afterDotSlashSpace = RX_ENDS_WITH_DOT_SLASH_SPACE + boolean afterDotSlashSpace = RX_ENDS_WITH_DOT_OR_SLASH_OR_SPACE_WITHOUT_OPERATOR .matcher(previousSnippetOneLine) .find(); boolean afterJavaKeyWord = RX_ENDS_WITH_JAVA_KEYWORD diff --git a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java index 3d70e017c..44efa9af7 100644 --- a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java @@ -216,20 +216,19 @@ public void testRelocateMavenFiles() { + " boolean flag2 = org.apache.maven.Utils.yes() ? org.apache.maven.Utils.one() : org.apache.maven.Utils.zero();\n" + " boolean flag3 = org.apache.maven.Utils.yes() || org.apache.maven.Utils.no();\n" + " boolean flag4 = org.apache.maven.Utils.yes() && org.apache.maven.Utils.no();\n" - + " boolean flag5 = org.apache.maven.Utils.yes() ^^ org.apache.maven.Utils.no();\n" - + " int value1 = org.apache.maven.Utils.x() + org.apache.maven.Utils.y()\n" - + " int value2 = org.apache.maven.Utils.x() - org.apache.maven.Utils.y()\n" - + " int value3 = org.apache.maven.Utils.x() * org.apache.maven.Utils.y()\n" - + " int value4 = org.apache.maven.Utils.x() / org.apache.maven.Utils.y()\n" - + " int value5 = org.apache.maven.Utils.one() | org.apache.maven.Utils.two()\n" - + " int value6 = org.apache.maven.Utils.one() & org.apache.maven.Utils.two()\n" - + " int value7 = org.apache.maven.Utils.one() ^ org.apache.maven.Utils.two()\n" + + " int value1 = org.apache.maven.Utils.x() + org.apache.maven.Utils.y();\n" + + " int value2 = org.apache.maven.Utils.x() - org.apache.maven.Utils.y();\n" + + " int value3 = org.apache.maven.Utils.x() * org.apache.maven.Utils.y();\n" + + " int value4 = org.apache.maven.Utils.x() / org.apache.maven.Utils.y();\n" + + " int value5 = org.apache.maven.Utils.one() | org.apache.maven.Utils.two();\n" + + " int value6 = org.apache.maven.Utils.one() & org.apache.maven.Utils.two();\n" + + " int value7 = org.apache.maven.Utils.one() ^ org.apache.maven.Utils.two();\n" + " switch (org.apache.maven.Utils.getValue()) {\n" - + " case org.apache.maven.Utils.STATIC_VALUE:\n" - + " org.apache.maven.Utils.info(\"known value\"):\n" + + " case org.apache.maven.Utils.STATIC_VALUE: \n" + + " org.apache.maven.Utils.info(\"known value\");\n" + " break;\n" + " default:\n" - + " org.apache.maven.Utils.warn(\"unknown value\"):\n" + + " org.apache.maven.Utils.warn(\"unknown value\");\n" + " break;\n" + " }\n" + " org.objectweb.asm.sub.Something something;\n" @@ -273,20 +272,19 @@ public void testRelocateMavenFiles() { + " boolean flag2 = com.acme.maven.Utils.yes() ? com.acme.maven.Utils.one() : com.acme.maven.Utils.zero();\n" + " boolean flag3 = com.acme.maven.Utils.yes() || com.acme.maven.Utils.no();\n" + " boolean flag4 = com.acme.maven.Utils.yes() && com.acme.maven.Utils.no();\n" - + " boolean flag5 = com.acme.maven.Utils.yes() ^^ com.acme.maven.Utils.no();\n" - + " int value1 = com.acme.maven.Utils.x() + com.acme.maven.Utils.y()\n" - + " int value2 = com.acme.maven.Utils.x() - com.acme.maven.Utils.y()\n" - + " int value3 = com.acme.maven.Utils.x() * com.acme.maven.Utils.y()\n" - + " int value4 = com.acme.maven.Utils.x() / com.acme.maven.Utils.y()\n" - + " int value5 = com.acme.maven.Utils.one() | com.acme.maven.Utils.two()\n" - + " int value6 = com.acme.maven.Utils.one() & com.acme.maven.Utils.two()\n" - + " int value7 = com.acme.maven.Utils.one() ^ com.acme.maven.Utils.two()\n" + + " int value1 = com.acme.maven.Utils.x() + com.acme.maven.Utils.y();\n" + + " int value2 = com.acme.maven.Utils.x() - com.acme.maven.Utils.y();\n" + + " int value3 = com.acme.maven.Utils.x() * com.acme.maven.Utils.y();\n" + + " int value4 = com.acme.maven.Utils.x() / com.acme.maven.Utils.y();\n" + + " int value5 = com.acme.maven.Utils.one() | com.acme.maven.Utils.two();\n" + + " int value6 = com.acme.maven.Utils.one() & com.acme.maven.Utils.two();\n" + + " int value7 = com.acme.maven.Utils.one() ^ com.acme.maven.Utils.two();\n" + " switch (com.acme.maven.Utils.getValue()) {\n" - + " case com.acme.maven.Utils.STATIC_VALUE:\n" - + " com.acme.maven.Utils.info(\"known value\"):\n" + + " case com.acme.maven.Utils.STATIC_VALUE: \n" + + " com.acme.maven.Utils.info(\"known value\");\n" + " break;\n" + " default:\n" - + " com.acme.maven.Utils.warn(\"unknown value\"):\n" + + " com.acme.maven.Utils.warn(\"unknown value\");\n" + " break;\n" + " }\n" + " aj.org.objectweb.asm.sub.Something something;\n" From 995afb8190feaeb411d0c939c8164c384a468f4d Mon Sep 17 00:00:00 2001 From: ursa Date: Wed, 26 Aug 2026 00:17:25 +0100 Subject: [PATCH 4/4] Plugin generates corrupted shaded sources beyond recognition #759 (review comments fixes) --- .../shade/relocation/SimpleRelocator.java | 5 +- .../shade/relocation/SimpleRelocatorTest.java | 126 ++++++++++++++---- 2 files changed, 104 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java index ae416efe3..a95ad8a65 100644 --- a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java +++ b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java @@ -34,11 +34,10 @@ public class SimpleRelocator implements Relocator { /** * Matches
        *
      • either dot,
      • - *
      • or slash,
      • *
      • or space at the end of a string, where string does NOT end with operator (generic type, binary, trinary).
      • *
      */ - private static final Pattern RX_ENDS_WITH_DOT_OR_SLASH_OR_SPACE_WITHOUT_OPERATOR = Pattern.compile("(\\.|/|[^<>?:+\\-*/^|&] )$"); + private static final Pattern RX_ENDS_WITH_DOT_OR_SPACE_WITHOUT_OPERATOR = Pattern.compile("(\\.|[^<>?:+\\-*/^|&] )$"); /** * Match
        @@ -247,7 +246,7 @@ private String shadeSourceWithExcludes( isFirstSnippet = false; } else { String previousSnippetOneLine = previousSnippet.replaceAll("\\s+", " "); - boolean afterDotSlashSpace = RX_ENDS_WITH_DOT_OR_SLASH_OR_SPACE_WITHOUT_OPERATOR + boolean afterDotSlashSpace = RX_ENDS_WITH_DOT_OR_SPACE_WITHOUT_OPERATOR .matcher(previousSnippetOneLine) .find(); boolean afterJavaKeyWord = RX_ENDS_WITH_JAVA_KEYWORD diff --git a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java index 44efa9af7..11109e6c2 100644 --- a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java @@ -208,21 +208,60 @@ public void testRelocateMavenFiles() { + " /** Javadoc, followed by default visibility method with fully qualified return type */\n" + " org.apache.maven.MyReturnType doSomething( org.apache.maven.Bar bar, org.objectweb.asm.sub.Something something) {\n" + " org.apache.maven.Bar bar;\n" - + " Map map1;\n" - + " Map< org.apache.maven.Key, org.apache.maven.Value > map2;\n" + + " org.apache.maven.Map map1;\n" + + " org.apache.maven.Map < org.apache.maven.Key , org.apache.maven.Value > map2 ; \n" + " throw org.apache.maven.Error.newError();\n" + " throw new org.apache.maven.Error();\n" + " boolean flag1 = bar instanceof org.apache.maven.Bar;\n" - + " boolean flag2 = org.apache.maven.Utils.yes() ? org.apache.maven.Utils.one() : org.apache.maven.Utils.zero();\n" - + " boolean flag3 = org.apache.maven.Utils.yes() || org.apache.maven.Utils.no();\n" - + " boolean flag4 = org.apache.maven.Utils.yes() && org.apache.maven.Utils.no();\n" - + " int value1 = org.apache.maven.Utils.x() + org.apache.maven.Utils.y();\n" - + " int value2 = org.apache.maven.Utils.x() - org.apache.maven.Utils.y();\n" - + " int value3 = org.apache.maven.Utils.x() * org.apache.maven.Utils.y();\n" - + " int value4 = org.apache.maven.Utils.x() / org.apache.maven.Utils.y();\n" - + " int value5 = org.apache.maven.Utils.one() | org.apache.maven.Utils.two();\n" - + " int value6 = org.apache.maven.Utils.one() & org.apache.maven.Utils.two();\n" - + " int value7 = org.apache.maven.Utils.one() ^ org.apache.maven.Utils.two();\n" + + + " boolean flag11 = org.apache.maven.Utils.yes() ? org.apache.maven.Utils.one() : org.apache.maven.Utils.zero() ; \n" + + " boolean flag12 = org.apache.maven.Utils.yes() || org.apache.maven.Utils.no() ; \n" + + " boolean flag13 = org.apache.maven.Utils.yes() && org.apache.maven.Utils.no() ; \n" + + + " boolean flag21=org.apache.maven.Utils.yes()?org.apache.maven.Utils.one():org.apache.maven.Utils.zero();\n" + + " boolean flag22=org.apache.maven.Utils.yes()||org.apache.maven.Utils.no();\n" + + " boolean flag23=org.apache.maven.Utils.yes()&&org.apache.maven.Utils.no();\n" + + + " boolean flag31 = org.apache.maven.Utils.yes ? org.apache.maven.Utils.one : org.apache.maven.Utils.zero ; \n" + + " boolean flag32 = org.apache.maven.Utils.yes || org.apache.maven.Utils.no ; \n" + + " boolean flag33 = org.apache.maven.Utils.yes && org.apache.maven.Utils.no ; \n" + + + " boolean flag41=org.apache.maven.Utils.yes?org.apache.maven.Utils.one:org.apache.maven.Utils.zero;\n" + + " boolean flag42=org.apache.maven.Utils.yes||org.apache.maven.Utils.no;\n" + + " boolean flag43=org.apache.maven.Utils.yes&&org.apache.maven.Utils.no;\n" + + + " int value11 = org.apache.maven.Utils.x() + org.apache.maven.Utils.y() ; \n" + + " int value12 = org.apache.maven.Utils.x() - org.apache.maven.Utils.y() ; \n" + + " int value13 = org.apache.maven.Utils.x() * org.apache.maven.Utils.y() ; \n" + + " int value14 = org.apache.maven.Utils.x() / org.apache.maven.Utils.y() ; \n" + + " int value15 = org.apache.maven.Utils.one() | org.apache.maven.Utils.two() ; \n" + + " int value16 = org.apache.maven.Utils.one() & org.apache.maven.Utils.two() ; \n" + + " int value17 = org.apache.maven.Utils.one() ^ org.apache.maven.Utils.two() ; \n" + + + " int value21=org.apache.maven.Utils.x()+org.apache.maven.Utils.y();\n" + + " int value22=org.apache.maven.Utils.x()-org.apache.maven.Utils.y();\n" + + " int value23=org.apache.maven.Utils.x()*org.apache.maven.Utils.y();\n" + + " int value24=org.apache.maven.Utils.x()/org.apache.maven.Utils.y();\n" + + " int value25=org.apache.maven.Utils.one()|org.apache.maven.Utils.two();\n" + + " int value26=org.apache.maven.Utils.one()&org.apache.maven.Utils.two();\n" + + " int value27=org.apache.maven.Utils.one()^org.apache.maven.Utils.two();\n" + + + " int value31 = org.apache.maven.Utils.x + org.apache.maven.Utils.y ; \n" + + " int value32 = org.apache.maven.Utils.x - org.apache.maven.Utils.y ; \n" + + " int value33 = org.apache.maven.Utils.x * org.apache.maven.Utils.y ; \n" + + " int value34 = org.apache.maven.Utils.x / org.apache.maven.Utils.y ; \n" + + " int value35 = org.apache.maven.Utils.one | org.apache.maven.Utils.two ; \n" + + " int value36 = org.apache.maven.Utils.one & org.apache.maven.Utils.two ; \n" + + " int value37 = org.apache.maven.Utils.one ^ org.apache.maven.Utils.two ; \n" + + + " int value41=org.apache.maven.Utils.x+org.apache.maven.Utils.y;\n" + + " int value42=org.apache.maven.Utils.x-org.apache.maven.Utils.y;\n" + + " int value43=org.apache.maven.Utils.x*org.apache.maven.Utils.y;\n" + + " int value44=org.apache.maven.Utils.x/org.apache.maven.Utils.y;\n" + + " int value45=org.apache.maven.Utils.one|org.apache.maven.Utils.two;\n" + + " int value46=org.apache.maven.Utils.one&org.apache.maven.Utils.two;\n" + + " int value47=org.apache.maven.Utils.one^org.apache.maven.Utils.two;\n" + + " switch (org.apache.maven.Utils.getValue()) {\n" + " case org.apache.maven.Utils.STATIC_VALUE: \n" + " org.apache.maven.Utils.info(\"known value\");\n" @@ -264,21 +303,60 @@ public void testRelocateMavenFiles() { + " /** Javadoc, followed by default visibility method with fully qualified return type */\n" + " com.acme.maven.MyReturnType doSomething( com.acme.maven.Bar bar, aj.org.objectweb.asm.sub.Something something) {\n" + " com.acme.maven.Bar bar;\n" - + " Map map1;\n" - + " Map< com.acme.maven.Key, com.acme.maven.Value > map2;\n" + + " com.acme.maven.Map map1;\n" + + " com.acme.maven.Map < com.acme.maven.Key , com.acme.maven.Value > map2 ; \n" + " throw com.acme.maven.Error.newError();\n" + " throw new com.acme.maven.Error();\n" + " boolean flag1 = bar instanceof com.acme.maven.Bar;\n" - + " boolean flag2 = com.acme.maven.Utils.yes() ? com.acme.maven.Utils.one() : com.acme.maven.Utils.zero();\n" - + " boolean flag3 = com.acme.maven.Utils.yes() || com.acme.maven.Utils.no();\n" - + " boolean flag4 = com.acme.maven.Utils.yes() && com.acme.maven.Utils.no();\n" - + " int value1 = com.acme.maven.Utils.x() + com.acme.maven.Utils.y();\n" - + " int value2 = com.acme.maven.Utils.x() - com.acme.maven.Utils.y();\n" - + " int value3 = com.acme.maven.Utils.x() * com.acme.maven.Utils.y();\n" - + " int value4 = com.acme.maven.Utils.x() / com.acme.maven.Utils.y();\n" - + " int value5 = com.acme.maven.Utils.one() | com.acme.maven.Utils.two();\n" - + " int value6 = com.acme.maven.Utils.one() & com.acme.maven.Utils.two();\n" - + " int value7 = com.acme.maven.Utils.one() ^ com.acme.maven.Utils.two();\n" + + + " boolean flag11 = com.acme.maven.Utils.yes() ? com.acme.maven.Utils.one() : com.acme.maven.Utils.zero() ; \n" + + " boolean flag12 = com.acme.maven.Utils.yes() || com.acme.maven.Utils.no() ; \n" + + " boolean flag13 = com.acme.maven.Utils.yes() && com.acme.maven.Utils.no() ; \n" + + + " boolean flag21=com.acme.maven.Utils.yes()?com.acme.maven.Utils.one():com.acme.maven.Utils.zero();\n" + + " boolean flag22=com.acme.maven.Utils.yes()||com.acme.maven.Utils.no();\n" + + " boolean flag23=com.acme.maven.Utils.yes()&&com.acme.maven.Utils.no();\n" + + + " boolean flag31 = com.acme.maven.Utils.yes ? com.acme.maven.Utils.one : com.acme.maven.Utils.zero ; \n" + + " boolean flag32 = com.acme.maven.Utils.yes || com.acme.maven.Utils.no ; \n" + + " boolean flag33 = com.acme.maven.Utils.yes && com.acme.maven.Utils.no ; \n" + + + " boolean flag41=com.acme.maven.Utils.yes?com.acme.maven.Utils.one:com.acme.maven.Utils.zero;\n" + + " boolean flag42=com.acme.maven.Utils.yes||com.acme.maven.Utils.no;\n" + + " boolean flag43=com.acme.maven.Utils.yes&&com.acme.maven.Utils.no;\n" + + + " int value11 = com.acme.maven.Utils.x() + com.acme.maven.Utils.y() ; \n" + + " int value12 = com.acme.maven.Utils.x() - com.acme.maven.Utils.y() ; \n" + + " int value13 = com.acme.maven.Utils.x() * com.acme.maven.Utils.y() ; \n" + + " int value14 = com.acme.maven.Utils.x() / com.acme.maven.Utils.y() ; \n" + + " int value15 = com.acme.maven.Utils.one() | com.acme.maven.Utils.two() ; \n" + + " int value16 = com.acme.maven.Utils.one() & com.acme.maven.Utils.two() ; \n" + + " int value17 = com.acme.maven.Utils.one() ^ com.acme.maven.Utils.two() ; \n" + + + " int value21=com.acme.maven.Utils.x()+com.acme.maven.Utils.y();\n" + + " int value22=com.acme.maven.Utils.x()-com.acme.maven.Utils.y();\n" + + " int value23=com.acme.maven.Utils.x()*com.acme.maven.Utils.y();\n" + + " int value24=com.acme.maven.Utils.x()/com.acme.maven.Utils.y();\n" + + " int value25=com.acme.maven.Utils.one()|com.acme.maven.Utils.two();\n" + + " int value26=com.acme.maven.Utils.one()&com.acme.maven.Utils.two();\n" + + " int value27=com.acme.maven.Utils.one()^com.acme.maven.Utils.two();\n" + + + " int value31 = com.acme.maven.Utils.x + com.acme.maven.Utils.y ; \n" + + " int value32 = com.acme.maven.Utils.x - com.acme.maven.Utils.y ; \n" + + " int value33 = com.acme.maven.Utils.x * com.acme.maven.Utils.y ; \n" + + " int value34 = com.acme.maven.Utils.x / com.acme.maven.Utils.y ; \n" + + " int value35 = com.acme.maven.Utils.one | com.acme.maven.Utils.two ; \n" + + " int value36 = com.acme.maven.Utils.one & com.acme.maven.Utils.two ; \n" + + " int value37 = com.acme.maven.Utils.one ^ com.acme.maven.Utils.two ; \n" + + + " int value41=com.acme.maven.Utils.x+com.acme.maven.Utils.y;\n" + + " int value42=com.acme.maven.Utils.x-com.acme.maven.Utils.y;\n" + + " int value43=com.acme.maven.Utils.x*com.acme.maven.Utils.y;\n" + + " int value44=com.acme.maven.Utils.x/com.acme.maven.Utils.y;\n" + + " int value45=com.acme.maven.Utils.one|com.acme.maven.Utils.two;\n" + + " int value46=com.acme.maven.Utils.one&com.acme.maven.Utils.two;\n" + + " int value47=com.acme.maven.Utils.one^com.acme.maven.Utils.two;\n" + + " switch (com.acme.maven.Utils.getValue()) {\n" + " case com.acme.maven.Utils.STATIC_VALUE: \n" + " com.acme.maven.Utils.info(\"known value\");\n"