Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong line numbers in some bugs #14

Open
h4iku opened this issue Mar 19, 2021 · 0 comments
Open

Wrong line numbers in some bugs #14

h4iku opened this issue Mar 19, 2021 · 0 comments

Comments

@h4iku
Copy link

h4iku commented Mar 19, 2021

The bugLineNum and fixLineNum for some bugs are off a little. These line numbers usually point to a comment on several lines before where the actual bug happens.

For example, in this bug, the fix happens at line 25, but line 25 is the start of a comment, and the actual fix starts at line 33:

https://github.com/checkstyle/checkstyle/blob/378e87f1e3bf8b2451ca511668954b707680b843/src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java#L25-L33

{
  "bugType": "CHANGE_MODIFIER",
  "fixCommitSHA1": "378e87f1e3bf8b2451ca511668954b707680b843",
  "fixCommitParentSHA1": "f7e86cdf5fc7c68d420f2f279b482ac9d1b5e3ac",
  "bugFilePath": "src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java",
  "fixPatch": "diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java\nindex 723b069..5601884 100644\n--- a/src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java\n+++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/LocalizedMessage.java\n@@ -30,7 +30,7 @@\n  * @author <a href=\"mailto:checkstyle@puppycrawl.com\">Oliver Burn</a>\n  * @version 1.0\n  */\n-class LocalizedMessage\n+public class LocalizedMessage\n     implements Comparable\n {\n     /** name of the resource bundle to get messages from **/\n@@ -84,7 +84,7 @@\n     }\n \n     /** @return the translated message **/\n-    String getMessage()\n+    public String getMessage()\n     {\n         // Very simple approach - wait for performance problems\n         final ResourceBundle bundle =\n@@ -94,13 +94,13 @@\n     }\n \n     /** @return the line number **/\n-    int getLineNo()\n+    public int getLineNo()\n     {\n         return mLineNo;\n     }\n \n     /** @return the column number **/\n-    int getColumnNo()\n+    public int getColumnNo()\n     {\n         return mColNo;\n     }\n",
  "projectName": "checkstyle.checkstyle",
  "bugLineNum": 25,
  "bugNodeStartChar": 1146,
  "bugNodeLength": 3344,
  "fixLineNum": 25,
  "fixNodeStartChar": 1146,
  "fixNodeLength": 3351,
  "sourceBeforeFix": "0",
  "sourceAfterFix": "1"
}

Same as this one where the fixed line number is 20:

{
  "bugType": "CHANGE_MODIFIER",
  "fixCommitSHA1": "9e669d7d3d316d5ba01157b4528d80157366305a",
  "fixCommitParentSHA1": "594400d5ed8e299d7a586b7a80fa22fe5794c72c",
  "bugFilePath": "src/main/java/org/bukkit/potion/PotionEffectType.java",
  "fixPatch": "diff --git a/src/main/java/org/bukkit/potion/PotionEffectType.java b/src/main/java/org/bukkit/potion/PotionEffectType.java\nindex d43aea5..8a60055 100644\n--- a/src/main/java/org/bukkit/potion/PotionEffectType.java\n+++ b/src/main/java/org/bukkit/potion/PotionEffectType.java\n@@ -12,99 +12,100 @@\n     /**\n      * Increases movement speed.\n      */\n-    public static PotionEffectType SPEED = new PotionEffectTypeWrapper(1);\n+    public static final PotionEffectType SPEED = new PotionEffectTypeWrapper(1);\n \n     /**\n      * Decreases movement speed.\n      */\n-    public static PotionEffectType SLOW = new PotionEffectTypeWrapper(2);\n+    public static final PotionEffectType SLOW = new PotionEffectTypeWrapper(2);\n \n     /**\n      * Increases dig speed.\n      */\n-    public static PotionEffectType FAST_DIGGING = new PotionEffectTypeWrapper(3);\n+    public static final PotionEffectType FAST_DIGGING = new PotionEffectTypeWrapper(3);\n \n     /**\n      * Decreases dig speed.\n      */\n-    public static PotionEffectType SLOW_DIGGING = new PotionEffectTypeWrapper(4);\n+    public static final PotionEffectType SLOW_DIGGING = new PotionEffectTypeWrapper(4);\n \n     /**\n      * Increases damage dealt.\n      */\n-    public static PotionEffectType INCREASE_DAMAGE = new PotionEffectTypeWrapper(5);\n+    public static final PotionEffectType INCREASE_DAMAGE = new PotionEffectTypeWrapper(5);\n \n     /**\n      * Heals an entity.\n      */\n-    public static PotionEffectType HEAL = new PotionEffectTypeWrapper(6);\n+    public static final PotionEffectType HEAL = new PotionEffectTypeWrapper(6);\n \n     /**\n      * Hurts an entity.\n      */\n-    public static PotionEffectType HARM = new PotionEffectTypeWrapper(7);\n+    public static final PotionEffectType HARM = new PotionEffectTypeWrapper(7);\n \n     /**\n      * Increases jump height.\n      */\n-    public static PotionEffectType JUMP = new PotionEffectTypeWrapper(8);\n+    public static final PotionEffectType JUMP = new PotionEffectTypeWrapper(8);\n \n     /**\n      * Warps vision on the client.\n      */\n-    public static PotionEffectType CONFUSION = new PotionEffectTypeWrapper(9);\n+    public static final PotionEffectType CONFUSION = new PotionEffectTypeWrapper(9);\n \n     /**\n      * Regenerates health.\n      */\n-    public static PotionEffectType REGENERATION = new PotionEffectTypeWrapper(10);\n+    public static final PotionEffectType REGENERATION = new PotionEffectTypeWrapper(10);\n \n     /**\n      * Decreases damage dealt to an entity.\n      */\n-    public static PotionEffectType DAMAGE_RESISTANCE = new PotionEffectTypeWrapper(11);\n+    public static final PotionEffectType DAMAGE_RESISTANCE = new PotionEffectTypeWrapper(11);\n \n     /**\n      * Stops fire damage.\n      */\n-    public static PotionEffectType FIRE_RESISTANCE = new PotionEffectTypeWrapper(12);\n+    public static final PotionEffectType FIRE_RESISTANCE = new PotionEffectTypeWrapper(12);\n \n     /**\n      * Allows breathing underwater.\n      */\n-    public static PotionEffectType WATER_BREATHING = new PotionEffectTypeWrapper(13);\n+    public static final PotionEffectType WATER_BREATHING = new PotionEffectTypeWrapper(13);\n \n     /**\n-     * Grants invisibility.\n+     * Grants invisibility. NOTE: Unusable due to not being implemented by Minecraft.\n      */\n     @Deprecated\n-    public static PotionEffectType INVISIBILITY = new PotionEffectTypeWrapper(14); // unimplemented\n+    public static final PotionEffectType INVISIBILITY = new PotionEffectTypeWrapper(14); // unimplemented\n \n     /**\n      * Blinds an entity.\n      */\n-    public static PotionEffectType BLINDNESS = new PotionEffectTypeWrapper(15);\n+    public static final PotionEffectType BLINDNESS = new PotionEffectTypeWrapper(15);\n \n     /**\n-     * Allows an entity to see in the dark.\n+     * Allows an entity to see in the dark. NOTE: Unusable due to not being \n+     * implemented by Minecraft.\n      */\n     @Deprecated\n-    public static PotionEffectType NIGHT_VISION = new PotionEffectTypeWrapper(16); // unimplemented\n+    public static final PotionEffectType NIGHT_VISION = new PotionEffectTypeWrapper(16); // unimplemented\n \n     /**\n      * Increases hunger.\n      */\n-    public static PotionEffectType HUNGER = new PotionEffectTypeWrapper(17);\n+    public static final PotionEffectType HUNGER = new PotionEffectTypeWrapper(17);\n \n     /**\n      * Decreases damage dealt by an entity.\n      */\n-    public static PotionEffectType WEAKNESS = new PotionEffectTypeWrapper(18);\n+    public static final PotionEffectType WEAKNESS = new PotionEffectTypeWrapper(18);\n \n     /**\n      * Deals damage to an entity over time.\n      */\n-    public static PotionEffectType POISON = new PotionEffectTypeWrapper(19);\n+    public static final PotionEffectType POISON = new PotionEffectTypeWrapper(19);\n \n     private final int id;\n \n",
  "projectName": "Bukkit.Bukkit",
  "bugLineNum": 17,
  "bugNodeStartChar": 357,
  "bugNodeLength": 118,
  "fixLineNum": 17,
  "fixNodeStartChar": 357,
  "fixNodeLength": 124,
  "sourceBeforeFix": "9",
  "sourceAfterFix": "25"
}

Bukkit/Bukkit@9e669d7/src/main/java/org/bukkit/potion/PotionEffectType.java

In the above examples, it is easy to find the intended line, you just go down until the comment finishes, and the next line is the one. However, there are some line numbers that are completely wrong, and there is no clear way to identify them.

For example, in this bug:

{
  "bugType": "OVERLOAD_METHOD_MORE_ARGS",
  "fixCommitSHA1": "0f61fff1d9412a00df98de912cfd295cd3440f38",
  "fixCommitParentSHA1": "33ff3f57c16c40545454c2a368f89fc4e47fc85d",
  "bugFilePath": "modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java",
  "fixPatch": "diff --git a/modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java b/modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java\nindex 903efbc..4502b19 100644\n--- a/modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java\n+++ b/modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java\n@@ -27,12 +27,11 @@\n @RestController\n public class StencilsetRestResource {\n \n-  @RequestMapping(value \u003d \"/editor/stencilset\", method \u003d RequestMethod.GET, produces \u003d \"application/json\")\n-  public @ResponseBody\n-  String getStencilset() {\n+  @RequestMapping(value\u003d\"/editor/stencilset\", method \u003d RequestMethod.GET, produces \u003d \"application/json;charset\u003dutf-8\")\n+  public @ResponseBody String getStencilset() {\n     InputStream stencilsetStream \u003d this.getClass().getClassLoader().getResourceAsStream(\"stencilset.json\");\n     try {\n-      return IOUtils.toString(stencilsetStream);\n+      return IOUtils.toString(stencilsetStream, \"utf-8\");\n     } catch (Exception e) {\n       throw new ActivitiException(\"Error while loading stencil set\", e);\n     }\n",
  "projectName": "Activiti.Activiti",
  "bugLineNum": 35,
  "bugNodeStartChar": 1343,
  "bugNodeLength": 34,
  "fixLineNum": 35,
  "fixNodeStartChar": 1343,
  "fixNodeLength": 43,
  "sourceBeforeFix": "IOUtils.toString(stencilsetStream)",
  "sourceAfterFix": "IOUtils.toString(stencilsetStream,\"utf-8\")"
}

The actual fixed line is 34:

Activiti/Activiti@0f61fff/modules/activiti-modeler/src/main/java/org/activiti/rest/editor/main/StencilsetRestResource.java

Or in this one:

{
  "bugType": "CHANGE_NUMERAL",
  "fixCommitSHA1": "b8a86c4259cf3d058106ef9c0388a86fae42469f",
  "fixCommitParentSHA1": "1982e95061fe991f2a00979cf97a6edadce04833",
  "bugFilePath": "tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java",
  "fixPatch": "diff --git a/tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java b/tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java\nindex 1739621..1740101 100644\n--- a/tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java\n+++ b/tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java\n@@ -1,3 +1,15 @@\n+/*\r\n+ * Copyright 2010 Mario Zechner (contact@badlogicgames.com), Nathan Sweet (admin@esotericsoftware.com)\r\n+ * \r\n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the\r\n+ * License. You may obtain a copy of the License at\r\n+ * \r\n+ * http://www.apache.org/licenses/LICENSE-2.0\r\n+ * \r\n+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\"\r\n+ * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language\r\n+ * governing permissions and limitations under the License.\r\n+ */\r\n package com.badlogic.gdx.tests;\r\n \r\n import com.badlogic.gdx.Gdx;\r\n@@ -11,7 +23,7 @@\n import com.badlogic.gdx.tests.utils.GdxTest;\r\n \r\n public class TileTest extends GdxTest {\r\n-\tstatic final int LAYERS \u003d 10;\r\n+\tstatic final int LAYERS \u003d 5;\r\n \tstatic final int BLOCK_TILES \u003d 25;\r\n \tstatic final int WIDTH \u003d 15;\r\n \tstatic final int HEIGHT \u003d 10;\r\n@@ -26,7 +38,7 @@\n \tpublic void create() {\r\n \t\tcam \u003d new OrthographicCamera();\r\n \t\tcam.setViewport(480, 320);\r\n-\t\tcam.getPosition().set(WIDTH*32/2, 10*HEIGHT/2,0);\t\t\r\n+\t\tcam.getPosition().set(WIDTH*32/2, HEIGHT/2,0);\t\t\r\n \t\ttexture \u003d Gdx.graphics.newTexture(Gdx.files.internal(\"data/tiles.png\"), TextureFilter.Nearest, TextureFilter.Nearest, TextureWrap.ClampToEdge, TextureWrap.ClampToEdge);\r\n \t\t\r\n \t\tfor(int i \u003d 0; i \u003c LAYERS; i++) {\r\n",
  "projectName": "libgdx.libgdx",
  "bugLineNum": 14,
  "bugNodeStartChar": 509,
  "bugNodeLength": 11,
  "fixLineNum": 14,
  "fixNodeStartChar": 496,
  "fixNodeLength": 10,
  "sourceBeforeFix": "LAYERS\u003d10",
  "sourceAfterFix": "LAYERS\u003d5"
}

Fixed line is 26:

libgdx/libgdx@b8a86c4/tests/gdx-tests/src/com/badlogic/gdx/tests/TileTest.java

In this one:

{
  "bugType": "CHANGE_IDENTIFIER",
  "fixCommitSHA1": "4974c29d05335dd33f73787a82ff6f91e0cced1e",
  "fixCommitParentSHA1": "dc6b41ea7ba85ae5ed053c82f3f4f09a68f7d827",
  "bugFilePath": "modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java",
  "fixPatch": "diff --git a/modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java b/modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java\nindex eba0f94..fadaf72 100644\n--- a/modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java\n+++ b/modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java\n@@ -37,7 +37,7 @@\n  * @author Alejandro Hernández\n  */\n @SuppressWarnings(\"unused\")\n-public interface RoutesBuilder\u003cT\u003e {\n+public interface RoutesBuilder\u003cT, U extends Identifier\u003e {\n \n \t/**\n \t * Constructs the \u003ccode\u003eRoutes\u003c/code\u003e instance with the information provided\n@@ -52,21 +52,18 @@\n \t *\n \t * @param  biFunction the function that will be used to calculate the single\n \t *         model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A\u003e RoutesBuilder\u003cT\u003e collectionItem(\n-\t\tBiFunction\u003cU, A, T\u003e biFunction, Class\u003cU\u003e identifierClass,\n-\t\tClass\u003cA\u003e aClass);\n+\tpublic \u003cA\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tBiFunction\u003cU, A, T\u003e biFunction, Class\u003cA\u003e aClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  decaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -87,19 +84,17 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F, G, H, I\u003e RoutesBuilder\u003cT\u003e\n-\t\tcollectionItem(\n+\tpublic \u003cA, B, C, D, E, F, G, H, I\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n \t\t\tDecaFunction\u003cU, A, B, C, D, E, F, G, H, I, T\u003e decaFunction,\n-\t\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n-\t\t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass, Class\u003cF\u003e fClass,\n-\t\t\tClass\u003cG\u003e gClass, Class\u003cH\u003e hClass, Class\u003cI\u003e iClass);\n+\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass,\n+\t\tClass\u003cE\u003e eClass, Class\u003cF\u003e fClass, Class\u003cG\u003e gClass, Class\u003cH\u003e hClass,\n+\t\tClass\u003cI\u003e iClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  enneaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -118,30 +113,25 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F, G, H\u003e RoutesBuilder\u003cT\u003e\n-\t\tcollectionItem(\n+\tpublic \u003cA, B, C, D, E, F, G, H\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n \t\t\tEnneaFunction\u003cU, A, B, C, D, E, F, G, H, T\u003e enneaFunction,\n-\t\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n-\t\t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass, Class\u003cF\u003e fClass,\n-\t\t\tClass\u003cG\u003e gClass, Class\u003cH\u003e hClass);\n+\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass,\n+\t\tClass\u003cE\u003e eClass, Class\u003cF\u003e fClass, Class\u003cG\u003e gClass, Class\u003cH\u003e hClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  function the function that will be used to calculate the single\n \t *         model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier\u003e RoutesBuilder\u003cT\u003e collectionItem(\n-\t\tFunction\u003cU, T\u003e function, Class\u003cU\u003e identifierClass);\n+\tpublic RoutesBuilder\u003cT, U\u003e collectionItem(Function\u003cU, T\u003e function);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  heptaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -156,18 +146,16 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F\u003e RoutesBuilder\u003cT\u003e\n-\t\tcollectionItem(\n-\t\t\tHeptaFunction\u003cU, A, B, C, D, E, F, T\u003e heptaFunction,\n-\t\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n-\t\t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass, Class\u003cF\u003e fClass);\n+\tpublic \u003cA, B, C, D, E, F\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tHeptaFunction\u003cU, A, B, C, D, E, F, T\u003e heptaFunction, Class\u003cA\u003e aClass,\n+\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass,\n+\t\tClass\u003cF\u003e fClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  hexaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -180,18 +168,15 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E\u003e RoutesBuilder\u003cT\u003e\n-\t\tcollectionItem(\n-\t\t\tHexaFunction\u003cU, A, B, C, D, E, T\u003e hexaFunction,\n-\t\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n-\t\t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass);\n+\tpublic \u003cA, B, C, D, E\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tHexaFunction\u003cU, A, B, C, D, E, T\u003e hexaFunction, Class\u003cA\u003e aClass,\n+\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  octaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -208,19 +193,16 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F, G\u003e RoutesBuilder\u003cT\u003e\n-\t\tcollectionItem(\n-\t\t\tOctaFunction\u003cU, A, B, C, D, E, F, G, T\u003e octaFunction,\n-\t\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n-\t\t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass, Class\u003cF\u003e fClass,\n-\t\t\tClass\u003cG\u003e gClass);\n+\tpublic \u003cA, B, C, D, E, F, G\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tOctaFunction\u003cU, A, B, C, D, E, F, G, T\u003e octaFunction, Class\u003cA\u003e aClass,\n+\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass,\n+\t\tClass\u003cF\u003e fClass, Class\u003cG\u003e gClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  pentaFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -231,16 +213,15 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D\u003e RoutesBuilder\u003cT\u003e collectionItem(\n-\t\tPentaFunction\u003cU, A, B, C, D, T\u003e pentaFunction, Class\u003cU\u003e identifierClass,\n-\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass);\n+\tpublic \u003cA, B, C, D\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tPentaFunction\u003cU, A, B, C, D, T\u003e pentaFunction, Class\u003cA\u003e aClass,\n+\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  tetraFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n@@ -249,25 +230,23 @@\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C\u003e RoutesBuilder\u003cT\u003e collectionItem(\n-\t\tTetraFunction\u003cU, A, B, C, T\u003e tetraFunction, Class\u003cU\u003e identifierClass,\n-\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass, Class\u003cC\u003e cClass);\n+\tpublic \u003cA, B, C\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tTetraFunction\u003cU, A, B, C, T\u003e tetraFunction, Class\u003cA\u003e aClass,\n+\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass);\n \n \t/**\n \t * Adds a route to a single model function.\n \t *\n \t * @param  triFunction the function that will be used to calculate the\n \t *         single model.\n-\t * @param  identifierClass the class of the identifier.\n \t * @param  aClass the class of the second parameter of the single model\n \t *         function.\n \t * @param  bClass the class of the third parameter of the single model\n \t *         function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B\u003e RoutesBuilder\u003cT\u003e collectionItem(\n-\t\tTriFunction\u003cU, A, B, T\u003e triFunction, Class\u003cU\u003e identifierClass,\n-\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass);\n+\tpublic \u003cA, B\u003e RoutesBuilder\u003cT, U\u003e collectionItem(\n+\t\tTriFunction\u003cU, A, B, T\u003e triFunction, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass);\n \n \t/**\n \t * Adds a route to a collection page function.\n@@ -276,9 +255,9 @@\n \t * @param  identifierClass the class of the identifier.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier\u003e RoutesBuilder\u003cT\u003e collectionPage(\n-\t\tBiFunction\u003cPagination, U, PageItems\u003cT\u003e\u003e biFunction,\n-\t\tClass\u003cU\u003e identifierClass);\n+\tpublic \u003cV extends Identifier\u003e RoutesBuilder\u003cT, U\u003e collectionPage(\n+\t\tBiFunction\u003cPagination, V, PageItems\u003cT\u003e\u003e biFunction,\n+\t\tClass\u003cV\u003e identifierClass);\n \n \t/**\n \t * Adds a route to a collection page function.\n@@ -296,10 +275,10 @@\n \t * @param  hClass the class of the ninth parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F, G, H\u003e RoutesBuilder\u003cT\u003e\n+\tpublic \u003cV extends Identifier, A, B, C, D, E, F, G, H\u003e RoutesBuilder\u003cT, U\u003e\n \t\tcollectionPage(\n-\t\t\tDecaFunction\u003cPagination, U, A, B, C, D, E, F, G, H,\n-\t\t\t\tPageItems\u003cT\u003e\u003e decaFunction, Class\u003cU\u003e identifierClass,\n+\t\t\tDecaFunction\u003cPagination, V, A, B, C, D, E, F, G, H,\n+\t\t\t\tPageItems\u003cT\u003e\u003e decaFunction, Class\u003cV\u003e identifierClass,\n \t\t\tClass\u003cA\u003e aClass, Class\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass,\n \t\t\tClass\u003cE\u003e eClass, Class\u003cF\u003e fClass, Class\u003cG\u003e gClass, Class\u003cH\u003e hClass);\n \n@@ -318,10 +297,10 @@\n \t * @param  gClass the class of the eighth parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F, G\u003e RoutesBuilder\u003cT\u003e\n+\tpublic \u003cV extends Identifier, A, B, C, D, E, F, G\u003e RoutesBuilder\u003cT, U\u003e\n \t\tcollectionPage(\n-\t\t\tEnneaFunction\u003cPagination, U, A, B, C, D, E, F, G, PageItems\u003cT\u003e\u003e\n-\t\t\t\tenneaFunction, Class\u003cU\u003e identifierClass, Class\u003cA\u003e aClass,\n+\t\t\tEnneaFunction\u003cPagination, V, A, B, C, D, E, F, G, PageItems\u003cT\u003e\u003e\n+\t\t\t\tenneaFunction, Class\u003cV\u003e identifierClass, Class\u003cA\u003e aClass,\n \t\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass,\n \t\t\tClass\u003cF\u003e fClass, Class\u003cG\u003e gClass);\n \n@@ -338,10 +317,10 @@\n \t * @param  eClass the class of the sixth parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E\u003e RoutesBuilder\u003cT\u003e\n+\tpublic \u003cV extends Identifier, A, B, C, D, E\u003e RoutesBuilder\u003cT, U\u003e\n \t\tcollectionPage(\n-\t\t\tHeptaFunction\u003cPagination, U, A, B, C, D, E, PageItems\u003cT\u003e\u003e\n-\t\t\t\theptaFunction, Class\u003cU\u003e identifierClass, Class\u003cA\u003e aClass,\n+\t\t\tHeptaFunction\u003cPagination, V, A, B, C, D, E, PageItems\u003cT\u003e\u003e\n+\t\t\t\theptaFunction, Class\u003cV\u003e identifierClass, Class\u003cA\u003e aClass,\n \t\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass);\n \n \t/**\n@@ -356,9 +335,10 @@\n \t * @param  dClass the class of the fifth parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D\u003e RoutesBuilder\u003cT\u003e collectionPage(\n-\t\tHexaFunction\u003cPagination, U, A, B, C, D, PageItems\u003cT\u003e\u003e hexaFunction,\n-\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n+\tpublic \u003cV extends Identifier, A, B, C, D\u003e RoutesBuilder\u003cT, U\u003e\n+\t\tcollectionPage(\n+\t\t\tHexaFunction\u003cPagination, V, A, B, C, D, PageItems\u003cT\u003e\u003e hexaFunction,\n+\t\t\tClass\u003cV\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n \t\tClass\u003cC\u003e cClass, Class\u003cD\u003e dClass);\n \n \t/**\n@@ -375,10 +355,10 @@\n \t * @param  fClass the class of the seventh parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C, D, E, F\u003e RoutesBuilder\u003cT\u003e\n+\tpublic \u003cV extends Identifier, A, B, C, D, E, F\u003e RoutesBuilder\u003cT, U\u003e\n \t\tcollectionPage(\n-\t\t\tOctaFunction\u003cPagination, U, A, B, C, D, E, F, PageItems\u003cT\u003e\u003e\n-\t\t\t\toctaFunction, Class\u003cU\u003e identifierClass, Class\u003cA\u003e aClass,\n+\t\t\tOctaFunction\u003cPagination, V, A, B, C, D, E, F, PageItems\u003cT\u003e\u003e\n+\t\t\t\toctaFunction, Class\u003cV\u003e identifierClass, Class\u003cA\u003e aClass,\n \t\t\tClass\u003cB\u003e bClass, Class\u003cC\u003e cClass, Class\u003cD\u003e dClass, Class\u003cE\u003e eClass,\n \t\t\tClass\u003cF\u003e fClass);\n \n@@ -393,9 +373,9 @@\n \t * @param  cClass the class of the fourth parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B, C\u003e RoutesBuilder\u003cT\u003e collectionPage(\n-\t\tPentaFunction\u003cPagination, U, A, B, C, PageItems\u003cT\u003e\u003e pentaFunction,\n-\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n+\tpublic \u003cV extends Identifier, A, B, C\u003e RoutesBuilder\u003cT, U\u003e collectionPage(\n+\t\tPentaFunction\u003cPagination, V, A, B, C, PageItems\u003cT\u003e\u003e pentaFunction,\n+\t\tClass\u003cV\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass,\n \t\tClass\u003cC\u003e cClass);\n \n \t/**\n@@ -408,9 +388,9 @@\n \t * @param  bClass the class of the third parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A, B\u003e RoutesBuilder\u003cT\u003e collectionPage(\n-\t\tTetraFunction\u003cPagination, U, A, B, PageItems\u003cT\u003e\u003e tetraFunction,\n-\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass);\n+\tpublic \u003cV extends Identifier, A, B\u003e RoutesBuilder\u003cT, U\u003e collectionPage(\n+\t\tTetraFunction\u003cPagination, V, A, B, PageItems\u003cT\u003e\u003e tetraFunction,\n+\t\tClass\u003cV\u003e identifierClass, Class\u003cA\u003e aClass, Class\u003cB\u003e bClass);\n \n \t/**\n \t * Adds a route to a collection page function.\n@@ -421,8 +401,8 @@\n \t * @param  aClass the class of the second parameter of the page function.\n \t * @return the updated builder.\n \t */\n-\tpublic \u003cU extends Identifier, A\u003e RoutesBuilder\u003cT\u003e collectionPage(\n-\t\tTriFunction\u003cPagination, U, A, PageItems\u003cT\u003e\u003e triFunction,\n-\t\tClass\u003cU\u003e identifierClass, Class\u003cA\u003e aClass);\n+\tpublic \u003cV extends Identifier, A\u003e RoutesBuilder\u003cT, U\u003e collectionPage(\n+\t\tTriFunction\u003cPagination, V, A, PageItems\u003cT\u003e\u003e triFunction,\n+\t\tClass\u003cV\u003e identifierClass, Class\u003cA\u003e aClass);\n \n }\n\\ No newline at end of file\n",
  "projectName": "liferay.liferay-portal",
  "bugLineNum": 424,
  "bugNodeStartChar": 17769,
  "bugNodeLength": 20,
  "fixLineNum": 424,
  "fixNodeStartChar": 17769,
  "fixNodeLength": 20,
  "sourceBeforeFix": "U extends Identifier",
  "sourceAfterFix": "V extends Identifier"
}

The file only has 408 lines but the fixLineNum is 424:

liferay/liferay-portal@4974c29/modules/apps/foundation/vulcan/vulcan-api/src/main/java/com/liferay/vulcan/resource/builder/RoutesBuilder.java

More examples
{
  "bugType": "CHANGE_OPERATOR",
  "fixCommitSHA1": "1876ac4a290bfeb7a4321c3232169dabd97367cf",
  "fixCommitParentSHA1": "fd928ffb92f336a7ff7af8b65ecf62e4c636537e",
  "bugFilePath": "source/com/intellij/lexer/__XmlLexer.java",
  "fixPatch": "diff --git a/source/com/intellij/lexer/__XmlLexer.java b/source/com/intellij/lexer/__XmlLexer.java\nindex a762a35..597e50d 100644\n--- a/source/com/intellij/lexer/__XmlLexer.java\n+++ b/source/com/intellij/lexer/__XmlLexer.java\n@@ -1,4 +1,4 @@\n-/* The following code was generated by JFlex 1.4 on 6/3/05 5:06 PM */\n+/* The following code was generated by JFlex 1.4 on 6/18/05 11:34 PM */\n \n  /* It\u0027s an automatically generated code. Do not modify it. */\n package com.intellij.lexer;\n@@ -11,7 +11,7 @@\n /**\n  * This class is a scanner generated by \n  * \u003ca href\u003d\"http://www.jflex.de/\"\u003eJFlex\u003c/a\u003e 1.4\n- * on 6/3/05 5:06 PM from the specification file\n+ * on 6/18/05 11:34 PM from the specification file\n  * \u003ctt\u003eC:/Irida/tools/lexer/_XmlLexer.flex\u003c/tt\u003e\n  */\n public class __XmlLexer implements FlexLexer,ELHostLexer {\n@@ -37,13 +37,13 @@\n    * Translates characters to character classes\n    */\n   private static final String ZZ_CMAP_PACKED \u003d \n-    \"\\11\\0\\2\\3\\1\\0\\2\\3\\22\\0\\1\\3\\1\\12\\1\\54\\1\\37\\1\\4\"+\n-    \"\\1\\0\\1\\22\\1\\55\\5\\0\\1\\10\\1\\7\\1\\57\\12\\2\\1\\1\\1\\25\"+\n-    \"\\1\\11\\1\\60\\1\\21\\1\\56\\1\\0\\1\\16\\1\\51\\1\\14\\1\\15\\1\\45\"+\n-    \"\\1\\41\\2\\1\\1\\53\\2\\1\\1\\52\\1\\47\\1\\1\\1\\42\\1\\44\\2\\1\"+\n-    \"\\1\\46\\1\\17\\1\\50\\3\\1\\1\\43\\1\\1\\1\\13\\1\\0\\1\\20\\1\\0\"+\n-    \"\\1\\1\\1\\0\\1\\26\\1\\35\\4\\41\\1\\23\\4\\1\\1\\23\\1\\36\\1\\34\"+\n-    \"\\1\\30\\1\\27\\1\\32\\1\\1\\1\\31\\1\\24\\1\\33\\2\\1\\1\\40\\2\\1\"+\n+    \"\\11\\0\\2\\3\\1\\0\\2\\3\\22\\0\\1\\3\\1\\13\\1\\55\\1\\40\\1\\4\"+\n+    \"\\1\\0\\1\\23\\1\\56\\5\\0\\1\\10\\1\\7\\1\\60\\12\\2\\1\\11\\1\\26\"+\n+    \"\\1\\12\\1\\61\\1\\22\\1\\57\\1\\0\\1\\17\\1\\52\\1\\15\\1\\16\\1\\46\"+\n+    \"\\1\\42\\2\\1\\1\\54\\2\\1\\1\\53\\1\\50\\1\\1\\1\\43\\1\\45\\2\\1\"+\n+    \"\\1\\47\\1\\20\\1\\51\\3\\1\\1\\44\\1\\1\\1\\14\\1\\0\\1\\21\\1\\0\"+\n+    \"\\1\\7\\1\\0\\1\\27\\1\\36\\4\\42\\1\\24\\4\\1\\1\\24\\1\\37\\1\\35\"+\n+    \"\\1\\31\\1\\30\\1\\33\\1\\1\\1\\32\\1\\25\\1\\34\\2\\1\\1\\41\\2\\1\"+\n     \"\\1\\5\\1\\0\\1\\6\\54\\0\\1\\1\\12\\0\\1\\1\\4\\0\\1\\1\\5\\0\"+\n     \"\\27\\1\\1\\0\\37\\1\\1\\0\\u013f\\1\\31\\0\\162\\1\\4\\0\\14\\1\\16\\0\"+\n     \"\\5\\1\\11\\0\\1\\1\\213\\0\\1\\1\\13\\0\\1\\1\\1\\0\\3\\1\\1\\0\"+\n@@ -112,20 +112,18 @@\n   private static final int [] ZZ_ACTION \u003d zzUnpackAction();\n \n   private static final String ZZ_ACTION_PACKED_0 \u003d\n-    \"\\1\\1\\3\\0\\1\\2\\3\\0\\2\\3\\2\\0\\1\\1\\1\\4\"+\n-    \"\\1\\1\\1\\5\\2\\6\\1\\7\\1\\6\\1\\10\\1\\6\\1\\11\"+\n-    \"\\1\\6\\1\\12\\1\\2\\1\\13\\1\\14\\3\\15\\1\\16\\1\\17\"+\n-    \"\\1\\20\\3\\3\\1\\13\\1\\21\\3\\3\\1\\6\\1\\22\\2\\12\"+\n-    \"\\2\\6\\4\\1\\1\\0\\1\\23\\1\\24\\7\\0\\1\\25\\1\\26\"+\n-    \"\\2\\0\\2\\3\\1\\0\\4\\3\\1\\0\\1\\27\\1\\0\\2\\12\"+\n-    \"\\1\\0\\1\\3\\3\\0\\1\\1\\1\\30\\3\\0\\1\\31\\10\\0\"+\n-    \"\\1\\32\\1\\33\\4\\3\\2\\12\\1\\34\\1\\30\\1\\35\\2\\0\"+\n-    \"\\1\\36\\2\\0\\1\\35\\1\\3\\1\\35\\1\\3\\2\\12\\2\\0\"+\n-    \"\\2\\3\\2\\12\\2\\0\\2\\3\\1\\37\\1\\40\\2\\0\\2\\3\"+\n-    \"\\2\\0\\2\\3\\1\\41\\1\\42\\2\\41\";\n+    \"\\1\\1\\3\\0\\1\\2\\7\\0\\1\\1\\1\\3\\1\\1\\1\\4\"+\n+    \"\\2\\5\\1\\6\\1\\5\\1\\7\\1\\5\\1\\10\\1\\5\\1\\11\"+\n+    \"\\1\\2\\1\\12\\1\\13\\3\\14\\1\\15\\1\\16\\1\\17\\3\\20\"+\n+    \"\\1\\12\\1\\21\\1\\20\\1\\5\\1\\22\\2\\11\\2\\5\\4\\1\"+\n+    \"\\1\\0\\1\\23\\1\\24\\10\\0\\1\\25\\1\\0\\1\\26\\7\\0\"+\n+    \"\\1\\27\\1\\0\\2\\11\\4\\0\\1\\1\\1\\30\\4\\0\\1\\31\"+\n+    \"\\7\\0\\1\\6\\1\\10\\1\\11\\1\\0\\1\\32\\1\\13\\1\\33\"+\n+    \"\\2\\11\\1\\34\\1\\30\\1\\35\\3\\0\\1\\36\\2\\0\\2\\11\"+\n+    \"\\2\\0\\2\\11\\2\\0\\1\\37\\1\\40\\4\\0\\1\\41\\1\\42\";\n \n   private static int [] zzUnpackAction() {\n-    int [] result \u003d new int[143];\n+    int [] result \u003d new int[127];\n     int offset \u003d 0;\n     offset \u003d zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);\n     return result;\n@@ -150,27 +148,25 @@\n   private static final int [] ZZ_ROWMAP \u003d zzUnpackRowMap();\n \n   private static final String ZZ_ROWMAP_PACKED_0 \u003d\n-    \"\\0\\0\\0\\61\\0\\142\\0\\223\\0\\304\\0\\365\\0\\u0126\\0\\u0157\"+\n-    \"\\0\\u0188\\0\\u01b9\\0\\u01ea\\0\\u021b\\0\\u024c\\0\\u027d\\0\\u02ae\\0\\u02df\"+\n-    \"\\0\\u0310\\0\\u0341\\0\\u0372\\0\\u03a3\\0\\u0341\\0\\u03d4\\0\\u0405\\0\\u0436\"+\n-    \"\\0\\u0467\\0\\u0498\\0\\u04c9\\0\\u04fa\\0\\u0341\\0\\u03a3\\0\\u0310\\0\\u0341\"+\n-    \"\\0\\u0341\\0\\u0341\\0\\u052b\\0\\u055c\\0\\u058d\\0\\u0310\\0\\u0341\\0\\u05be\"+\n-    \"\\0\\u05ef\\0\\u0620\\0\\u0651\\0\\u0341\\0\\u0682\\0\\u06b3\\0\\u06e4\\0\\u0715\"+\n-    \"\\0\\u0341\\0\\u0746\\0\\u0777\\0\\u07a8\\0\\u07d9\\0\\u0341\\0\\u0341\\0\\u080a\"+\n-    \"\\0\\u083b\\0\\u086c\\0\\u089d\\0\\u08ce\\0\\u08ff\\0\\u0930\\0\\u0341\\0\\u0341\"+\n-    \"\\0\\u0961\\0\\u0992\\0\\u09c3\\0\\u09f4\\0\\u0a25\\0\\u0a56\\0\\u0a87\\0\\u0ab8\"+\n-    \"\\0\\u0ae9\\0\\u0651\\0\\u0341\\0\\u0b1a\\0\\u0b4b\\0\\u0b7c\\0\\u06e4\\0\\u0341\"+\n-    \"\\0\\u0715\\0\\u0bad\\0\\u0bde\\0\\u0c0f\\0\\u024c\\0\\u0c40\\0\\u0c71\\0\\u0ca2\"+\n-    \"\\0\\u0341\\0\\u0cd3\\0\\u0d04\\0\\u0d35\\0\\u0d66\\0\\u0d97\\0\\u0dc8\\0\\u0df9\"+\n-    \"\\0\\u0e2a\\0\\u0341\\0\\u0341\\0\\u0e5b\\0\\u0e8c\\0\\u0ebd\\0\\u0eee\\0\\u0f1f\"+\n-    \"\\0\\u0f50\\0\\u0341\\0\\u0341\\0\\u0341\\0\\u0f81\\0\\u0fb2\\0\\u0341\\0\\u0fe3\"+\n-    \"\\0\\u1014\\0\\u052b\\0\\u1045\\0\\u05be\\0\\u1076\\0\\u10a7\\0\\u10d8\\0\\u1109\"+\n-    \"\\0\\u113a\\0\\u116b\\0\\u119c\\0\\u11cd\\0\\u11fe\\0\\u122f\\0\\u1260\\0\\u1291\"+\n-    \"\\0\\u12c2\\0\\u0467\\0\\u0467\\0\\u12f3\\0\\u1324\\0\\u1355\\0\\u1386\\0\\u13b7\"+\n-    \"\\0\\u13e8\\0\\u1419\\0\\u144a\\0\\u0341\\0\\u0341\\0\\u052b\\0\\u05be\";\n+    \"\\0\\0\\0\\62\\0\\144\\0\\226\\0\\310\\0\\372\\0\\u012c\\0\\u015e\"+\n+    \"\\0\\u0190\\0\\u01c2\\0\\u01f4\\0\\u0226\\0\\u0258\\0\\u028a\\0\\u02bc\\0\\u02ee\"+\n+    \"\\0\\u0320\\0\\u0352\\0\\u0384\\0\\u03b6\\0\\u0352\\0\\u03e8\\0\\u041a\\0\\u044c\"+\n+    \"\\0\\u047e\\0\\u04b0\\0\\u04e2\\0\\u0514\\0\\u0352\\0\\u03b6\\0\\u0320\\0\\u0352\"+\n+    \"\\0\\u0352\\0\\u0352\\0\\u0352\\0\\u0546\\0\\u03b6\\0\\u0320\\0\\u0352\\0\\u0578\"+\n+    \"\\0\\u05aa\\0\\u0352\\0\\u05dc\\0\\u060e\\0\\u0640\\0\\u0672\\0\\u0352\\0\\u06a4\"+\n+    \"\\0\\u06d6\\0\\u0708\\0\\u073a\\0\\u0352\\0\\u0352\\0\\u076c\\0\\u079e\\0\\u07d0\"+\n+    \"\\0\\u0802\\0\\u0834\\0\\u0866\\0\\u0898\\0\\u08ca\\0\\u0352\\0\\u08fc\\0\\u0352\"+\n+    \"\\0\\u092e\\0\\u0960\\0\\u0992\\0\\u09c4\\0\\u09f6\\0\\u0a28\\0\\u05aa\\0\\u0352\"+\n+    \"\\0\\u0a5a\\0\\u0a8c\\0\\u0abe\\0\\u0640\\0\\u0672\\0\\u0af0\\0\\u0b22\\0\\u0b54\"+\n+    \"\\0\\u0258\\0\\u0b86\\0\\u0bb8\\0\\u0bea\\0\\u0c1c\\0\\u0352\\0\\u0c4e\\0\\u0c80\"+\n+    \"\\0\\u0cb2\\0\\u0ce4\\0\\u0d16\\0\\u0d48\\0\\u0d7a\\0\\u0dac\\0\\u0dde\\0\\u0e10\"+\n+    \"\\0\\u0e42\\0\\u0352\\0\\u0e74\\0\\u0352\\0\\u0ea6\\0\\u0ed8\\0\\u0352\\0\\u0352\"+\n+    \"\\0\\u0352\\0\\u0f0a\\0\\u0f3c\\0\\u0f6e\\0\\u0352\\0\\u0fa0\\0\\u0fd2\\0\\u1004\"+\n+    \"\\0\\u1036\\0\\u1068\\0\\u109a\\0\\u10cc\\0\\u10fe\\0\\u1130\\0\\u1162\\0\\u047e\"+\n+    \"\\0\\u047e\\0\\u1194\\0\\u11c6\\0\\u11f8\\0\\u122a\\0\\u0352\\0\\u0352\";\n \n   private static int [] zzUnpackRowMap() {\n-    int [] result \u003d new int[143];\n+    int [] result \u003d new int[127];\n     int offset \u003d 0;\n     offset \u003d zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);\n     return result;\n@@ -193,120 +189,111 @@\n   private static final int [] ZZ_TRANS \u003d zzUnpackTrans();\n \n   private static final String ZZ_TRANS_PACKED_0 \u003d\n-    \"\\3\\15\\1\\16\\1\\17\\4\\15\\1\\20\\10\\15\\1\\21\\36\\15\"+\n-    \"\\1\\22\\1\\23\\1\\22\\1\\16\\5\\22\\1\\24\\2\\22\\4\\23\"+\n+    \"\\3\\15\\1\\16\\1\\17\\5\\15\\1\\20\\10\\15\\1\\21\\36\\15\"+\n+    \"\\1\\22\\1\\23\\1\\22\\1\\16\\6\\22\\1\\24\\2\\22\\4\\23\"+\n     \"\\1\\22\\1\\25\\1\\21\\2\\23\\1\\22\\11\\23\\1\\22\\14\\23\"+\n-    \"\\3\\22\\1\\26\\2\\22\\1\\27\\7\\22\\1\\24\\2\\22\\4\\27\"+\n+    \"\\3\\22\\1\\26\\2\\22\\1\\27\\10\\22\\1\\24\\2\\22\\4\\27\"+\n     \"\\2\\22\\1\\21\\2\\27\\1\\22\\11\\27\\1\\22\\14\\27\\2\\22\"+\n-    \"\\1\\30\\3\\22\\1\\31\\1\\22\\1\\16\\5\\22\\1\\24\\2\\22\"+\n+    \"\\1\\30\\3\\22\\1\\31\\1\\22\\1\\16\\6\\22\\1\\24\\2\\22\"+\n     \"\\4\\31\\1\\22\\1\\25\\1\\21\\2\\31\\1\\22\\11\\31\\1\\22\"+\n-    \"\\14\\31\\5\\22\\10\\32\\1\\33\\50\\32\\1\\22\\1\\34\\1\\22\"+\n-    \"\\1\\16\\5\\22\\1\\24\\2\\22\\4\\34\\2\\22\\1\\21\\2\\34\"+\n-    \"\\1\\22\\11\\34\\1\\22\\14\\34\\5\\22\\3\\35\\1\\16\\5\\35\"+\n+    \"\\14\\31\\5\\22\\10\\32\\1\\33\\51\\32\\1\\22\\1\\34\\1\\22\"+\n+    \"\\1\\16\\6\\22\\1\\24\\2\\22\\4\\34\\2\\22\\1\\21\\2\\34\"+\n+    \"\\1\\22\\11\\34\\1\\22\\14\\34\\5\\22\\3\\35\\1\\16\\6\\35\"+\n     \"\\1\\36\\10\\35\\1\\37\\31\\35\\1\\40\\1\\41\\2\\35\\1\\42\"+\n-    \"\\11\\22\\1\\24\\10\\22\\1\\21\\36\\22\\4\\43\\1\\44\\4\\43\"+\n-    \"\\1\\45\\10\\43\\1\\46\\31\\43\\1\\47\\4\\43\\4\\50\\1\\51\"+\n-    \"\\4\\50\\1\\52\\10\\50\\1\\46\\32\\50\\1\\47\\3\\50\\1\\22\"+\n-    \"\\1\\31\\1\\22\\1\\16\\5\\22\\1\\24\\1\\22\\1\\53\\4\\31\"+\n-    \"\\1\\22\\1\\54\\1\\21\\2\\31\\1\\22\\11\\31\\1\\22\\4\\31\"+\n-    \"\\1\\55\\1\\31\\1\\56\\5\\31\\1\\57\\1\\60\\3\\22\\20\\61\"+\n-    \"\\1\\62\\40\\61\\3\\15\\1\\0\\1\\63\\4\\15\\1\\0\\10\\15\"+\n-    \"\\1\\0\\36\\15\\3\\0\\1\\16\\55\\0\\4\\15\\1\\63\\1\\64\"+\n-    \"\\3\\15\\1\\0\\10\\15\\1\\0\\36\\15\\12\\0\\1\\65\\43\\0\"+\n-    \"\\1\\66\\1\\67\\2\\0\\1\\70\\12\\0\\4\\70\\3\\0\\1\\71\"+\n-    \"\\1\\70\\1\\0\\1\\72\\3\\70\\1\\73\\1\\70\\1\\74\\2\\70\"+\n-    \"\\1\\75\\14\\70\\67\\0\\2\\23\\4\\0\\2\\23\\3\\0\\4\\23\"+\n-    \"\\3\\0\\2\\23\\1\\0\\11\\23\\1\\0\\14\\23\\17\\0\\1\\76\"+\n-    \"\\67\\0\\1\\77\\40\\0\\2\\27\\4\\0\\2\\27\\3\\0\\4\\27\"+\n-    \"\\3\\0\\2\\27\\1\\0\\11\\27\\1\\0\\14\\27\\26\\0\\1\\100\"+\n-    \"\\40\\0\\2\\31\\4\\0\\2\\31\\3\\0\\4\\31\\3\\0\\2\\31\"+\n-    \"\\1\\0\\11\\31\\1\\0\\14\\31\\5\\0\\10\\32\\1\\101\\60\\32\"+\n-    \"\\1\\102\\50\\32\\1\\0\\2\\34\\4\\0\\2\\34\\3\\0\\4\\34\"+\n-    \"\\3\\0\\2\\34\\1\\0\\11\\34\\1\\0\\14\\34\\5\\0\\4\\43\"+\n-    \"\\1\\0\\15\\43\\1\\0\\31\\43\\1\\0\\4\\43\\4\\103\\1\\104\"+\n-    \"\\1\\105\\14\\103\\1\\0\\31\\103\\1\\0\\4\\103\\4\\43\\1\\0\"+\n-    \"\\5\\43\\1\\106\\7\\43\\1\\0\\31\\43\\1\\0\\4\\43\\4\\50\"+\n-    \"\\1\\0\\15\\50\\1\\0\\32\\50\\1\\0\\3\\50\\4\\107\\1\\110\"+\n-    \"\\1\\105\\14\\107\\1\\0\\32\\107\\1\\0\\3\\107\\4\\50\\1\\0\"+\n-    \"\\5\\50\\1\\111\\7\\50\\1\\0\\32\\50\\1\\0\\3\\50\\20\\112\"+\n-    \"\\1\\113\\33\\112\\1\\114\\4\\112\\1\\0\\2\\31\\4\\0\\2\\31\"+\n+    \"\\12\\22\\1\\24\\10\\22\\1\\21\\36\\22\\4\\43\\1\\44\\5\\43\"+\n+    \"\\1\\45\\10\\43\\1\\46\\31\\43\\1\\47\\10\\43\\1\\50\\5\\43\"+\n+    \"\\1\\45\\10\\43\\1\\46\\32\\43\\1\\47\\3\\43\\1\\22\\1\\31\"+\n+    \"\\1\\22\\1\\16\\6\\22\\1\\24\\1\\22\\1\\51\\4\\31\\1\\22\"+\n+    \"\\1\\52\\1\\21\\2\\31\\1\\22\\11\\31\\1\\22\\4\\31\\1\\53\"+\n+    \"\\1\\31\\1\\54\\5\\31\\1\\55\\1\\56\\3\\22\\21\\57\\1\\60\"+\n+    \"\\40\\57\\3\\15\\1\\0\\1\\61\\5\\15\\1\\0\\10\\15\\1\\0\"+\n+    \"\\36\\15\\3\\0\\1\\16\\56\\0\\4\\15\\1\\61\\1\\62\\4\\15\"+\n+    \"\\1\\0\\10\\15\\1\\0\\36\\15\\13\\0\\1\\63\\43\\0\\1\\64\"+\n+    \"\\1\\65\\2\\0\\1\\66\\13\\0\\4\\66\\3\\0\\1\\67\\1\\66\"+\n+    \"\\1\\0\\1\\70\\3\\66\\1\\71\\1\\66\\1\\72\\2\\66\\1\\73\"+\n+    \"\\14\\66\\70\\0\\2\\23\\4\\0\\2\\23\\1\\74\\3\\0\\4\\23\"+\n+    \"\\3\\0\\2\\23\\1\\0\\11\\23\\1\\0\\14\\23\\20\\0\\1\\75\"+\n+    \"\\70\\0\\1\\76\\40\\0\\2\\27\\4\\0\\2\\27\\1\\77\\3\\0\"+\n+    \"\\4\\27\\3\\0\\2\\27\\1\\0\\11\\27\\1\\0\\14\\27\\27\\0\"+\n+    \"\\1\\100\\40\\0\\2\\31\\4\\0\\2\\31\\1\\101\\3\\0\\4\\31\"+\n+    \"\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\14\\31\\5\\0\\10\\32\"+\n+    \"\\1\\102\\61\\32\\1\\103\\51\\32\\1\\0\\2\\34\\4\\0\\2\\34\"+\n+    \"\\1\\104\\3\\0\\4\\34\\3\\0\\2\\34\\1\\0\\11\\34\\1\\0\"+\n+    \"\\14\\34\\12\\0\\1\\105\\61\\0\\1\\106\\54\\0\\21\\107\\1\\110\"+\n+    \"\\33\\107\\1\\111\\4\\107\\1\\0\\2\\31\\4\\0\\2\\31\\1\\101\"+\n     \"\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\10\\31\"+\n-    \"\\1\\115\\3\\31\\6\\0\\2\\31\\4\\0\\2\\31\\3\\0\\4\\31\"+\n-    \"\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\3\\31\\1\\116\\10\\31\"+\n-    \"\\5\\0\\54\\117\\1\\120\\4\\117\\55\\121\\1\\120\\3\\121\\20\\0\"+\n-    \"\\1\\122\\40\\0\\4\\15\\1\\63\\4\\15\\1\\0\\10\\15\\1\\0\"+\n-    \"\\36\\15\\3\\64\\1\\123\\1\\124\\1\\64\\1\\125\\2\\64\\1\\123\"+\n-    \"\\10\\64\\1\\123\\36\\64\\10\\0\\1\\126\\2\\0\\1\\127\\1\\0\"+\n-    \"\\1\\130\\44\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\"+\n-    \"\\2\\70\\1\\131\\11\\70\\1\\0\\14\\70\\6\\0\\2\\70\\4\\0\"+\n-    \"\\2\\70\\3\\0\\4\\70\\3\\0\\1\\70\\1\\132\\1\\131\\11\\70\"+\n-    \"\\1\\0\\14\\70\\6\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\"+\n-    \"\\3\\0\\2\\70\\1\\131\\1\\70\\1\\133\\6\\70\\1\\134\\1\\0\"+\n-    \"\\14\\70\\6\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\"+\n-    \"\\2\\70\\1\\131\\5\\70\\1\\135\\3\\70\\1\\0\\14\\70\\6\\0\"+\n-    \"\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\\2\\70\\1\\131\"+\n-    \"\\7\\70\\1\\136\\1\\70\\1\\0\\14\\70\\7\\0\\1\\137\\35\\0\"+\n-    \"\\1\\140\\30\\0\\1\\126\\2\\0\\1\\127\\45\\0\\10\\32\\1\\141\"+\n-    \"\\71\\32\\1\\142\\37\\32\\4\\0\\1\\104\\54\\0\\4\\103\\1\\104\"+\n-    \"\\1\\0\\14\\103\\1\\0\\31\\103\\1\\0\\4\\103\\6\\105\\1\\143\"+\n-    \"\\52\\105\\4\\43\\1\\0\\3\\43\\1\\144\\2\\43\\1\\145\\6\\43\"+\n-    \"\\1\\0\\31\\43\\1\\0\\4\\43\\4\\0\\1\\110\\54\\0\\4\\107\"+\n-    \"\\1\\110\\1\\0\\14\\107\\1\\0\\32\\107\\1\\0\\3\\107\\4\\50\"+\n-    \"\\1\\0\\3\\50\\1\\146\\2\\50\\1\\147\\6\\50\\1\\0\\32\\50\"+\n-    \"\\1\\0\\3\\50\\54\\114\\1\\112\\4\\114\\1\\0\\2\\31\\4\\0\"+\n-    \"\\2\\31\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\"+\n-    \"\\11\\31\\1\\150\\2\\31\\6\\0\\2\\31\\4\\0\\2\\31\\3\\0\"+\n-    \"\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\6\\31\\1\\151\"+\n-    \"\\5\\31\\26\\0\\1\\152\\37\\0\\6\\123\\1\\153\\52\\123\\4\\64\"+\n-    \"\\1\\124\\1\\64\\1\\125\\2\\64\\1\\123\\10\\64\\1\\123\\36\\64\"+\n-    \"\\10\\0\\1\\154\\64\\0\\1\\155\\106\\0\\1\\156\\17\\0\\2\\70\"+\n-    \"\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\\2\\70\\1\\157\\11\\70\"+\n-    \"\\1\\0\\14\\70\\6\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\"+\n-    \"\\3\\0\\2\\70\\1\\131\\2\\70\\1\\160\\6\\70\\1\\0\\14\\70\"+\n-    \"\\6\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\\2\\70\"+\n-    \"\\1\\131\\1\\70\\1\\132\\7\\70\\1\\0\\14\\70\\6\\0\\2\\70\"+\n-    \"\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\\2\\70\\1\\131\\2\\70\"+\n-    \"\\1\\71\\6\\70\\1\\0\\14\\70\\6\\0\\2\\70\\4\\0\\2\\70\"+\n-    \"\\3\\0\\4\\70\\3\\0\\2\\70\\1\\131\\3\\70\\1\\134\\5\\70\"+\n-    \"\\1\\0\\14\\70\\7\\0\\1\\137\\22\\0\\1\\157\\35\\0\\1\\161\"+\n-    \"\\11\\0\\3\\161\\7\\0\\1\\161\\6\\0\\1\\161\\3\\0\\1\\161\"+\n-    \"\\3\\0\\1\\161\\3\\0\\1\\161\\7\\0\\21\\32\\1\\0\\37\\32\"+\n-    \"\\4\\43\\1\\0\\3\\43\\1\\162\\11\\43\\1\\0\\31\\43\\1\\0\"+\n-    \"\\10\\43\\1\\0\\7\\43\\1\\163\\5\\43\\1\\0\\31\\43\\1\\0\"+\n-    \"\\4\\43\\4\\50\\1\\0\\3\\50\\1\\164\\11\\50\\1\\0\\32\\50\"+\n-    \"\\1\\0\\7\\50\\1\\0\\7\\50\\1\\165\\5\\50\\1\\0\\32\\50\"+\n-    \"\\1\\0\\3\\50\\1\\0\\2\\31\\4\\0\\2\\31\\3\\0\\4\\31\"+\n-    \"\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\12\\31\\1\\166\\1\\31\"+\n-    \"\\6\\0\\2\\31\\4\\0\\2\\31\\3\\0\\3\\31\\1\\167\\3\\0\"+\n-    \"\\2\\31\\1\\0\\11\\31\\1\\0\\14\\31\\22\\0\\1\\170\\57\\0\"+\n-    \"\\1\\171\\45\\0\\2\\70\\4\\0\\2\\70\\3\\0\\4\\70\\3\\0\"+\n-    \"\\2\\70\\1\\131\\3\\70\\1\\132\\5\\70\\1\\0\\14\\70\\7\\0\"+\n-    \"\\1\\161\\11\\0\\3\\161\\6\\0\\1\\157\\1\\161\\6\\0\\1\\161\"+\n-    \"\\3\\0\\1\\161\\3\\0\\1\\161\\3\\0\\1\\161\\7\\0\\4\\43\"+\n-    \"\\1\\0\\10\\43\\1\\172\\4\\43\\1\\0\\31\\43\\1\\0\\4\\43\"+\n-    \"\\4\\50\\1\\0\\10\\50\\1\\173\\4\\50\\1\\0\\32\\50\\1\\0\"+\n-    \"\\3\\50\\1\\0\\2\\31\\4\\0\\2\\31\\3\\0\\4\\31\\3\\0\"+\n-    \"\\2\\31\\1\\0\\11\\31\\1\\0\\13\\31\\1\\174\\6\\0\\2\\31\"+\n-    \"\\4\\0\\2\\31\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\"+\n-    \"\\1\\0\\5\\31\\1\\175\\6\\31\\23\\0\\1\\176\\61\\0\\1\\177\"+\n-    \"\\41\\0\\4\\43\\1\\0\\11\\43\\1\\200\\3\\43\\1\\0\\31\\43\"+\n-    \"\\1\\0\\4\\43\\4\\50\\1\\0\\11\\50\\1\\201\\3\\50\\1\\0\"+\n-    \"\\32\\50\\1\\0\\3\\50\\1\\0\\2\\31\\4\\0\\2\\31\\3\\0\"+\n-    \"\\1\\202\\3\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\14\\31\"+\n-    \"\\6\\0\\2\\31\\4\\0\\2\\31\\3\\0\\4\\31\\3\\0\\2\\31\"+\n-    \"\\1\\0\\11\\31\\1\\0\\7\\31\\1\\203\\4\\31\\24\\0\\1\\204\"+\n-    \"\\104\\0\\1\\205\\15\\0\\4\\43\\1\\0\\12\\43\\1\\206\\2\\43\"+\n-    \"\\1\\0\\31\\43\\1\\0\\4\\43\\4\\50\\1\\0\\12\\50\\1\\207\"+\n-    \"\\2\\50\\1\\0\\32\\50\\1\\0\\3\\50\\16\\0\\1\\210\\106\\0\"+\n-    \"\\1\\211\\14\\0\\4\\43\\1\\0\\11\\43\\1\\212\\3\\43\\1\\0\"+\n-    \"\\31\\43\\1\\0\\4\\43\\4\\50\\1\\0\\11\\50\\1\\213\\3\\50\"+\n-    \"\\1\\0\\32\\50\\1\\0\\3\\50\\13\\0\\1\\214\\112\\0\\1\\215\"+\n-    \"\\13\\0\\4\\43\\1\\0\\6\\43\\1\\216\\6\\43\\1\\0\\31\\43\"+\n-    \"\\1\\0\\4\\43\\4\\50\\1\\0\\6\\50\\1\\217\\6\\50\\1\\0\"+\n-    \"\\32\\50\\1\\0\\3\\50\";\n+    \"\\1\\112\\3\\31\\6\\0\\2\\31\\4\\0\\2\\31\\1\\101\\3\\0\"+\n+    \"\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\3\\31\\1\\113\"+\n+    \"\\10\\31\\5\\0\\55\\114\\1\\43\\4\\114\\56\\115\\1\\43\\3\\115\"+\n+    \"\\21\\0\\1\\116\\40\\0\\4\\15\\1\\61\\5\\15\\1\\0\\10\\15\"+\n+    \"\\1\\0\\36\\15\\3\\62\\1\\117\\1\\120\\1\\62\\1\\121\\3\\62\"+\n+    \"\\1\\117\\10\\62\\1\\117\\36\\62\\10\\0\\1\\122\\3\\0\\1\\123\"+\n+    \"\\1\\0\\1\\124\\44\\0\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\"+\n+    \"\\4\\66\\3\\0\\2\\66\\1\\126\\11\\66\\1\\0\\14\\66\\6\\0\"+\n+    \"\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\\1\\66\"+\n+    \"\\1\\127\\1\\126\\11\\66\\1\\0\\14\\66\\6\\0\\2\\66\\4\\0\"+\n+    \"\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\\1\\126\\1\\66\"+\n+    \"\\1\\130\\6\\66\\1\\131\\1\\0\\14\\66\\6\\0\\2\\66\\4\\0\"+\n+    \"\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\\1\\126\\5\\66\"+\n+    \"\\1\\132\\3\\66\\1\\0\\14\\66\\6\\0\\2\\66\\4\\0\\2\\66\"+\n+    \"\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\\1\\126\\7\\66\\1\\133\"+\n+    \"\\1\\66\\1\\0\\14\\66\\7\\0\\1\\134\\36\\0\\1\\135\\21\\0\"+\n+    \"\\1\\136\\13\\0\\4\\136\\3\\0\\2\\136\\1\\0\\11\\136\\1\\0\"+\n+    \"\\14\\136\\15\\0\\1\\122\\3\\0\\1\\123\\46\\0\\1\\137\\13\\0\"+\n+    \"\\4\\137\\3\\0\\2\\137\\1\\0\\11\\137\\1\\0\\14\\137\\6\\0\"+\n+    \"\\1\\140\\13\\0\\4\\140\\3\\0\\2\\140\\1\\0\\11\\140\\1\\0\"+\n+    \"\\14\\140\\5\\0\\10\\32\\1\\141\\73\\32\\1\\142\\37\\32\\1\\0\"+\n+    \"\\1\\143\\13\\0\\4\\143\\3\\0\\2\\143\\1\\0\\11\\143\\1\\0\"+\n+    \"\\14\\143\\5\\0\\6\\105\\1\\144\\46\\105\\1\\0\\4\\105\\6\\106\"+\n+    \"\\1\\144\\47\\106\\1\\0\\3\\106\\55\\111\\1\\107\\4\\111\\1\\0\"+\n+    \"\\2\\31\\4\\0\\2\\31\\1\\101\\3\\0\\4\\31\\3\\0\\2\\31\"+\n+    \"\\1\\0\\11\\31\\1\\0\\11\\31\\1\\145\\2\\31\\6\\0\\2\\31\"+\n+    \"\\4\\0\\2\\31\\1\\101\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\"+\n+    \"\\11\\31\\1\\0\\6\\31\\1\\146\\5\\31\\27\\0\\1\\147\\37\\0\"+\n+    \"\\6\\117\\1\\150\\53\\117\\4\\62\\1\\120\\1\\62\\1\\121\\3\\62\"+\n+    \"\\1\\117\\10\\62\\1\\117\\36\\62\\10\\0\\1\\151\\66\\0\\1\\152\"+\n+    \"\\107\\0\\1\\153\\17\\0\\1\\154\\13\\0\\4\\154\\3\\0\\2\\154\"+\n+    \"\\1\\0\\11\\154\\1\\0\\14\\154\\6\\0\\2\\66\\4\\0\\2\\66\"+\n+    \"\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\\1\\155\\11\\66\\1\\0\"+\n+    \"\\14\\66\\6\\0\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\"+\n+    \"\\3\\0\\2\\66\\1\\126\\2\\66\\1\\156\\6\\66\\1\\0\\14\\66\"+\n+    \"\\6\\0\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\"+\n+    \"\\2\\66\\1\\126\\1\\66\\1\\127\\7\\66\\1\\0\\14\\66\\6\\0\"+\n+    \"\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\"+\n+    \"\\1\\126\\2\\66\\1\\67\\6\\66\\1\\0\\14\\66\\6\\0\\2\\66\"+\n+    \"\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\\2\\66\\1\\126\"+\n+    \"\\3\\66\\1\\131\\5\\66\\1\\0\\14\\66\\7\\0\\1\\134\\23\\0\"+\n+    \"\\1\\155\\35\\0\\1\\157\\12\\0\\3\\157\\7\\0\\1\\157\\6\\0\"+\n+    \"\\1\\157\\3\\0\\1\\157\\3\\0\\1\\157\\3\\0\\1\\157\\10\\0\"+\n+    \"\\2\\136\\4\\0\\2\\136\\4\\0\\4\\136\\3\\0\\2\\136\\1\\0\"+\n+    \"\\11\\136\\1\\0\\14\\136\\6\\0\\2\\137\\4\\0\\2\\137\\4\\0\"+\n+    \"\\4\\137\\3\\0\\2\\137\\1\\0\\11\\137\\1\\0\\14\\137\\6\\0\"+\n+    \"\\2\\140\\4\\0\\2\\140\\4\\0\\4\\140\\3\\0\\2\\140\\1\\0\"+\n+    \"\\11\\140\\1\\0\\14\\140\\5\\0\\22\\32\\1\\0\\37\\32\\1\\0\"+\n+    \"\\2\\143\\4\\0\\2\\143\\4\\0\\4\\143\\3\\0\\2\\143\\1\\0\"+\n+    \"\\11\\143\\1\\0\\14\\143\\6\\0\\2\\31\\4\\0\\2\\31\\1\\101\"+\n+    \"\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\12\\31\"+\n+    \"\\1\\160\\1\\31\\6\\0\\2\\31\\4\\0\\2\\31\\1\\101\\3\\0\"+\n+    \"\\3\\31\\1\\161\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\\14\\31\"+\n+    \"\\23\\0\\1\\162\\60\\0\\1\\163\\45\\0\\2\\154\\4\\0\\2\\154\"+\n+    \"\\4\\0\\4\\154\\3\\0\\2\\154\\1\\126\\11\\154\\1\\0\\14\\154\"+\n+    \"\\6\\0\\2\\66\\4\\0\\2\\66\\1\\125\\3\\0\\4\\66\\3\\0\"+\n+    \"\\2\\66\\1\\126\\3\\66\\1\\127\\5\\66\\1\\0\\14\\66\\7\\0\"+\n+    \"\\1\\157\\12\\0\\3\\157\\6\\0\\1\\155\\1\\157\\6\\0\\1\\157\"+\n+    \"\\3\\0\\1\\157\\3\\0\\1\\157\\3\\0\\1\\157\\10\\0\\2\\31\"+\n+    \"\\4\\0\\2\\31\\1\\101\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\"+\n+    \"\\11\\31\\1\\0\\13\\31\\1\\164\\6\\0\\2\\31\\4\\0\\2\\31\"+\n+    \"\\1\\101\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\\1\\0\"+\n+    \"\\5\\31\\1\\165\\6\\31\\24\\0\\1\\166\\62\\0\\1\\167\\42\\0\"+\n+    \"\\2\\31\\4\\0\\2\\31\\1\\101\\3\\0\\1\\170\\3\\31\\3\\0\"+\n+    \"\\2\\31\\1\\0\\11\\31\\1\\0\\14\\31\\6\\0\\2\\31\\4\\0\"+\n+    \"\\2\\31\\1\\101\\3\\0\\4\\31\\3\\0\\2\\31\\1\\0\\11\\31\"+\n+    \"\\1\\0\\7\\31\\1\\171\\4\\31\\25\\0\\1\\172\\105\\0\\1\\173\"+\n+    \"\\34\\0\\1\\174\\107\\0\\1\\175\\30\\0\\1\\176\\113\\0\\1\\177\"+\n+    \"\\13\\0\";\n \n   private static int [] zzUnpackTrans() {\n-    int [] result \u003d new int[5243];\n+    int [] result \u003d new int[4700];\n     int offset \u003d 0;\n     offset \u003d zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);\n     return result;\n@@ -347,17 +334,16 @@\n   private static final int [] ZZ_ATTRIBUTE \u003d zzUnpackAttribute();\n \n   private static final String ZZ_ATTRIBUTE_PACKED_0 \u003d\n-    \"\\1\\1\\3\\0\\1\\1\\3\\0\\2\\1\\2\\0\\5\\1\\1\\11\"+\n-    \"\\2\\1\\1\\11\\7\\1\\1\\11\\2\\1\\3\\11\\4\\1\\1\\11\"+\n-    \"\\4\\1\\1\\11\\4\\1\\1\\11\\3\\1\\1\\0\\2\\11\\7\\0\"+\n-    \"\\2\\11\\2\\0\\2\\1\\1\\0\\4\\1\\1\\0\\1\\11\\1\\0\"+\n-    \"\\2\\1\\1\\0\\1\\11\\3\\0\\2\\1\\3\\0\\1\\11\\10\\0\"+\n-    \"\\2\\11\\6\\1\\3\\11\\2\\0\\1\\11\\2\\0\\6\\1\\2\\0\"+\n-    \"\\4\\1\\2\\0\\4\\1\\2\\0\\2\\1\\2\\0\\2\\1\\2\\11\"+\n-    \"\\2\\1\";\n+    \"\\1\\1\\3\\0\\1\\1\\7\\0\\5\\1\\1\\11\\2\\1\\1\\11\"+\n+    \"\\7\\1\\1\\11\\2\\1\\4\\11\\3\\1\\1\\11\\2\\1\\1\\11\"+\n+    \"\\4\\1\\1\\11\\3\\1\\1\\0\\2\\11\\10\\0\\1\\11\\1\\0\"+\n+    \"\\1\\11\\7\\0\\1\\11\\1\\0\\2\\1\\4\\0\\2\\1\\4\\0\"+\n+    \"\\1\\11\\7\\0\\3\\1\\1\\0\\1\\11\\1\\1\\1\\11\\2\\1\"+\n+    \"\\3\\11\\3\\0\\1\\11\\2\\0\\2\\1\\2\\0\\2\\1\\2\\0\"+\n+    \"\\2\\1\\4\\0\\2\\11\";\n \n   private static int [] zzUnpackAttribute() {\n-    int [] result \u003d new int[143];\n+    int [] result \u003d new int[127];\n     int offset \u003d 0;\n     offset \u003d zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);\n     return result;\n@@ -681,11 +667,11 @@\n       zzMarkedPos \u003d zzMarkedPosL;\n \n       switch (zzAction \u003c 0 ? zzAction : ZZ_ACTION[zzAction]) {\n-        case 3: \n+        case 16: \n           { return XmlTokenType.XML_ATTRIBUTE_VALUE_TOKEN;\n           }\n         case 35: break;\n-        case 11: \n+        case 10: \n           { return XmlTokenType.XML_BAD_CHARACTER;\n           }\n         case 36: break;\n@@ -697,7 +683,7 @@\n           { return elTokenType2;\n           }\n         case 38: break;\n-        case 15: \n+        case 14: \n           { yybegin(ATTR_VALUE_SQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER;\n           }\n         case 39: break;\n@@ -713,7 +699,7 @@\n           { return XmlTokenType.XML_CHAR_ENTITY_REF;\n           }\n         case 42: break;\n-        case 5: \n+        case 4: \n           { yybegin(TAG); return XmlTokenType.XML_START_TAG_START;\n           }\n         case 43: break;\n@@ -721,14 +707,14 @@\n           { yybegin(END_TAG); return XmlTokenType.XML_END_TAG_START;\n           }\n         case 44: break;\n-        case 6: \n+        case 5: \n           { if(yystate() \u003d\u003d YYINITIAL){\n         return XmlTokenType.XML_BAD_CHARACTER;\n       }\n       else yybegin(popState()); yypushback(yylength());\n           }\n         case 45: break;\n-        case 7: \n+        case 6: \n           { yybegin(ATTR_LIST); pushState(TAG); return XmlTokenType.XML_NAME;\n           }\n         case 46: break;\n@@ -756,7 +742,7 @@\n           { return XmlTokenType.XML_COMMENT_CHARACTERS;\n           }\n         case 52: break;\n-        case 9: \n+        case 8: \n           { yybegin(ATTR_LIST); pushState(PROCESSING_INSTRUCTION); return XmlTokenType.XML_NAME;\n           }\n         case 53: break;\n@@ -764,23 +750,23 @@\n           { yybegin(YYINITIAL); return XmlTokenType.XML_DOCTYPE_END;\n           }\n         case 54: break;\n-        case 14: \n+        case 13: \n           { yybegin(ATTR_VALUE_DQ); return XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER;\n           }\n         case 55: break;\n-        case 16: \n+        case 15: \n           { return XmlTokenType.XML_EQ;\n           }\n         case 56: break;\n-        case 13: \n+        case 12: \n           { yybegin(ATTR_LIST); yypushback(yylength());\n           }\n         case 57: break;\n-        case 10: \n+        case 9: \n           { return XmlTokenType.XML_NAME;\n           }\n         case 58: break;\n-        case 8: \n+        case 7: \n           { yybegin(YYINITIAL); return XmlTokenType.XML_TAG_END;\n           }\n         case 59: break;\n@@ -792,7 +778,7 @@\n           { return XmlElementType.XML_MARKUP;\n           }\n         case 61: break;\n-        case 12: \n+        case 11: \n           { yybegin(ATTR); return XmlTokenType.XML_NAME;\n           }\n         case 62: break;\n@@ -812,7 +798,7 @@\n           { yybegin(PROCESSING_INSTRUCTION); return XmlTokenType.XML_PI_START;\n           }\n         case 66: break;\n-        case 4: \n+        case 3: \n           { return XmlTokenType.XML_WHITE_SPACE;\n           }\n         case 67: break;\n@@ -821,7 +807,7 @@\n           }\n         case 68: break;\n         default:\n-          if (zzInput \u003d\u003d YYEOF \u0026\u0026 zzStartRead \u003c\u003d zzCurrentPos) {\n+          if (zzInput \u003d\u003d YYEOF \u0026\u0026 zzStartRead \u003d\u003d zzCurrentPos) {\n             zzAtEOF \u003d true;\n             zzDoEOF();\n             return null;\n",
  "projectName": "JetBrains.intellij-community",
  "bugLineNum": 824,
  "bugNodeStartChar": 27623,
  "bugNodeLength": 27,
  "fixLineNum": 824,
  "fixNodeStartChar": 27623,
  "fixNodeLength": 27,
  "sourceBeforeFix": "zzStartRead \u003c\u003d zzCurrentPos",
  "sourceAfterFix": "zzStartRead \u003d\u003d zzCurrentPos"
},
{
  "bugType": "CHANGE_MODIFIER",
  "fixCommitSHA1": "c7dacca00828e586ce4496d83a25a4d60a6fb60f",
  "fixCommitParentSHA1": "90fc43b33de1439ae7d92b12c3e09038aa878f50",
  "bugFilePath": "graphics/java/android/graphics/PorterDuff.java",
  "fixPatch": "diff --git a/graphics/java/android/graphics/PorterDuff.java b/graphics/java/android/graphics/PorterDuff.java\nindex 2bbbff3..d7d3049 100644\n--- a/graphics/java/android/graphics/PorterDuff.java\n+++ b/graphics/java/android/graphics/PorterDuff.java\n@@ -16,46 +16,345 @@\n \n package android.graphics;\n \n+/**\n+ * \u003cp\u003eThis class contains the list of alpha compositing and blending modes\n+ * that can be passed to {@link PorterDuffXfermode}, a specialized implementation\n+ * of {@link Paint}\u0027s {@link Paint#setXfermode(Xfermode) transfer mode}.\n+ * All the available modes can be found in the {@link Mode} enum.\u003c/p\u003e\n+ */\n public class PorterDuff {\n+    /**\n+     * {@usesMathJax}\n+     *\n+     * \u003ch3\u003ePorter-Duff\u003c/h3\u003e\n+     *\n+     * \u003cp\u003eThe name of the parent class is an homage to the work of Thomas Porter and\n+     * Tom Duff, presented in their seminal 1984 paper titled \"Compositing Digital Images\".\n+     * In this paper, the authors describe 12 compositing operators that govern how to\n+     * compute the color resulting of the composition of a source (the graphics object\n+     * to render) with a destination (the content of the render target).\u003c/p\u003e\n+     *\n+     * \u003cp\u003e\"Compositing Digital Images\" was published in \u003cem\u003eComputer Graphics\u003c/em\u003e\n+     * Volume 18, Number 3 dated July 1984.\u003c/p\u003e\n+     *\n+     * \u003cp\u003eBecause the work of Porter and Duff focuses solely on the effects of the alpha\n+     * channel of the source and destination, the 12 operators described in the original\n+     * paper are called alpha compositing modes here.\u003c/p\u003e\n+     *\n+     * \u003cp\u003eFor convenience, this class also provides several blending modes, which similarly\n+     * define the result of compositing a source and a destination but without being\n+     * constrained to the alpha channel. These blending modes are not defined by Porter\n+     * and Duff but have been included in this class for convenience purposes.\u003c/p\u003e\n+     *\n+     * \u003ch3\u003eDiagrams\u003c/h3\u003e\n+     *\n+     * \u003cp\u003eAll the example diagrams presented below use the same source and destination\n+     * images:\u003c/p\u003e\n+     *\n+     * \u003ctable summary\u003d\"Source and Destination\" style\u003d\"background-color: transparent;\"\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC.png\" /\u003e\n+     *             \u003cfigcaption\u003eSource image\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST.png\" /\u003e\n+     *             \u003cfigcaption\u003eDestination image\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     * \u003c/table\u003e\n+     *\n+     * \u003cp\u003eThe order of drawing operations used to generate each diagram is shown in the\n+     * following code snippet:\u003c/p\u003e\n+     *\n+     * \u003cpre class\u003d\"prettyprint\"\u003e\n+     * Paint paint \u003d new Paint();\n+     * canvas.drawBitmap(destinationImage, 0, 0, paint);\n+     *\n+     * PorterDuff.Mode mode \u003d // choose a mode\n+     * paint.setXfermode(new PorterDuffXfermode(mode));\n+     *\n+     * canvas.drawBitmap(sourceImage, 0, 0, paint);\n+     * \u003c/pre\u003e\n \n-    // these value must match their native equivalents. See SkXfermode.h\n+     *\n+     * \u003ch3\u003eAlpha compositing modes\u003c/h3\u003e\n+     *\n+     * \u003ctable summary\u003d\"Alpha compositing modes\" style\u003d\"background-color: transparent;\"\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SRC Source}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_OVER.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SRC_OVER Source Over}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_IN.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SRC_IN Source In}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_ATOP.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SRC_ATOP Source Atop}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DST Destination}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_OVER.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DST_OVER Destination Over}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_IN.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DST_IN Destination In}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_ATOP.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DST_ATOP Destination Atop}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_CLEAR.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #CLEAR Clear}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_OUT.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SRC_OUT Source Out}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_OUT.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DST_OUT Destination Out}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_XOR.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #XOR Exclusive Or}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     * \u003c/table\u003e\n+     *\n+     * \u003ch3\u003eBlending modes\u003c/h3\u003e\n+     *\n+     * \u003ctable summary\u003d\"Blending modes\" style\u003d\"background-color: transparent;\"\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DARKEN.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #DARKEN Darken}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_LIGHTEN.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #LIGHTEN Lighten}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_MULTIPLY.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #MULTIPLY Multiply}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     *     \u003ctr\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SCREEN.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #SCREEN Screen}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *         \u003ctd style\u003d\"border: none; text-align: center;\"\u003e\n+     *             \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_OVERLAY.png\" /\u003e\n+     *             \u003cfigcaption\u003e{@link #OVERLAY Overlay}\u003c/figcaption\u003e\n+     *         \u003c/td\u003e\n+     *     \u003c/tr\u003e\n+     * \u003c/table\u003e\n+     *\n+     * \u003ch3\u003eCompositing equations\u003c/h3\u003e\n+     *\n+     * \u003cp\u003eThe documentation of each individual alpha compositing or blending mode below\n+     * provides the exact equation used to compute alpha and color value of the result\n+     * of the composition of a source and destination.\u003c/p\u003e\n+     *\n+     * \u003cp\u003eThe result (or output) alpha value is noted \\(\\alpha_{out}\\). The result (or output)\n+     * color value is noted \\(C_{out}\\).\u003c/p\u003e\n+     */\n     public enum Mode {\n-        /** [0, 0] */\n+        // these value must match their native equivalents. See SkXfermode.h\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_CLEAR.png\" /\u003e\n+         *     \u003cfigcaption\u003eDestination pixels covered by the source are cleared to 0.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d 0\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d 0\\)\u003c/p\u003e\n+         */\n         CLEAR       (0),\n-        /** [Sa, Sc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC.png\" /\u003e\n+         *     \u003cfigcaption\u003eThe source pixels replace the destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{src}\\)\u003c/p\u003e\n+         */\n         SRC         (1),\n-        /** [Da, Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST.png\" /\u003e\n+         *     \u003cfigcaption\u003eThe source pixels are discarded, leaving the destination intact.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{dst}\\)\u003c/p\u003e\n+         */\n         DST         (2),\n-        /** [Sa + (1 - Sa)*Da, Rc \u003d Sc + (1 - Sa)*Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_OVER.png\" /\u003e\n+         *     \u003cfigcaption\u003eThe source pixels are drawn over the destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} + (1 - \\alpha_{src}) * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{src} + (1 - \\alpha_{src}) * C_{dst}\\)\u003c/p\u003e\n+         */\n         SRC_OVER    (3),\n-        /** [Sa + (1 - Sa)*Da, Rc \u003d Dc + (1 - Da)*Sc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_OVER.png\" /\u003e\n+         *     \u003cfigcaption\u003eThe source pixels are drawn behind the destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{dst} + (1 - \\alpha_{dst}) * \\alpha_{src}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{dst} + (1 - \\alpha_{dst}) * C_{src}\\)\u003c/p\u003e\n+         */\n         DST_OVER    (4),\n-        /** [Sa * Da, Sc * Da] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_IN.png\" /\u003e\n+         *     \u003cfigcaption\u003eKeeps the source pixels that cover the destination pixels,\n+         *     discards the remaining source and destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         */\n         SRC_IN      (5),\n-        /** [Sa * Da, Sa * Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_IN.png\" /\u003e\n+         *     \u003cfigcaption\u003eKeeps the destination pixels that cover source pixels,\n+         *     discards the remaining source and destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{dst} * \\alpha_{src}\\)\u003c/p\u003e\n+         */\n         DST_IN      (6),\n-        /** [Sa * (1 - Da), Sc * (1 - Da)] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_OUT.png\" /\u003e\n+         *     \u003cfigcaption\u003eKeeps the source pixels that do not cover destination pixels.\n+         *     Discards source pixels that cover destination pixels. Discards all\n+         *     destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d (1 - \\alpha_{dst}) * \\alpha_{src}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d (1 - \\alpha_{dst}) * C_{src}\\)\u003c/p\u003e\n+         */\n         SRC_OUT     (7),\n-        /** [Da * (1 - Sa), Dc * (1 - Sa)] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_OUT.png\" /\u003e\n+         *     \u003cfigcaption\u003eKeeps the destination pixels that are not covered by source pixels.\n+         *     Discards destination pixels that are covered by source pixels. Discards all\n+         *     source pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d (1 - \\alpha_{src}) * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d (1 - \\alpha_{src}) * C_{dst}\\)\u003c/p\u003e\n+         */\n         DST_OUT     (8),\n-        /** [Da, Sc * Da + (1 - Sa) * Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SRC_ATOP.png\" /\u003e\n+         *     \u003cfigcaption\u003eDiscards the source pixels that do not cover destination pixels.\n+         *     Draws remaining source pixels over destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d \\alpha_{dst} * C_{src} + (1 - \\alpha_{src}) * C_{dst}\\)\u003c/p\u003e\n+         */\n         SRC_ATOP    (9),\n-        /** [Sa, Sa * Dc + Sc * (1 - Da)] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DST_ATOP.png\" /\u003e\n+         *     \u003cfigcaption\u003eDiscards the destination pixels that are not covered by source pixels.\n+         *     Draws remaining destination pixels over source pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d \\alpha_{src} * C_{dst} + (1 - \\alpha_{dst}) * C_{src}\\)\u003c/p\u003e\n+         */\n         DST_ATOP    (10),\n-        /** [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_XOR.png\" /\u003e\n+         *     \u003cfigcaption\u003eDiscards the source and destination pixels where source pixels\n+         *     cover destination pixels. Draws remaining source pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d (1 - \\alpha_{dst}) * \\alpha_{src} + (1 - \\alpha_{src}) * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d (1 - \\alpha_{dst}) * C_{src} + (1 - \\alpha_{src}) * C_{dst}\\)\u003c/p\u003e\n+         */\n         XOR         (11),\n-        /** [Sa + Da - Sa*Da,\n-             Sc*(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_DARKEN.png\" /\u003e\n+         *     \u003cfigcaption\u003eRetains the smallest component of the source and\n+         *     destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} + \\alpha_{dst} - \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d (1 - \\alpha_{dst}) * C_{src} + (1 - \\alpha_{src}) * C_{dst} + min(C_{src}, C_{dst})\\)\u003c/p\u003e\n+         */\n         DARKEN      (16),\n-        /** [Sa + Da - Sa*Da,\n-             Sc*(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_LIGHTEN.png\" /\u003e\n+         *     \u003cfigcaption\u003eRetains the largest component of the source and\n+         *     destination pixel.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} + \\alpha_{dst} - \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d (1 - \\alpha_{dst}) * C_{src} + (1 - \\alpha_{src}) * C_{dst} + max(C_{src}, C_{dst})\\)\u003c/p\u003e\n+         */\n         LIGHTEN     (17),\n-        /** [Sa * Da, Sc * Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_MULTIPLY.png\" /\u003e\n+         *     \u003cfigcaption\u003eMultiplies the source and destination pixels.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{src} * C_{dst}\\)\u003c/p\u003e\n+         */\n         MULTIPLY    (13),\n-        /** [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_SCREEN.png\" /\u003e\n+         *     \u003cfigcaption\u003eAdds the source and destination pixels, then subtracts the\n+         *     source pixels multiplied by the destination.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} + \\alpha_{dst} - \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d C_{src} + C_{dst} - C_{src} * C_{dst}\\)\u003c/p\u003e\n+         */\n         SCREEN      (14),\n-        /** Saturate(S + D) */\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_ADD.png\" /\u003e\n+         *     \u003cfigcaption\u003eAdds the source pixels to the destination pixels and saturates\n+         *     the result.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d max(0, min(\\alpha_{src} + \\alpha_{dst}, 1))\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(C_{out} \u003d max(0, min(C_{src} + C_{dst}, 1))\\)\u003c/p\u003e\n+         */\n         ADD         (12),\n+        /**\n+         * \u003cp\u003e\n+         *     \u003cimg src\u003d\"{@docRoot}reference/android/images/graphics/composite_OVERLAY.png\" /\u003e\n+         *     \u003cfigcaption\u003eMultiplies or screens the source and destination depending on the\n+         *     destination color.\u003c/figcaption\u003e\n+         * \u003c/p\u003e\n+         * \u003cp\u003e\\(\\alpha_{out} \u003d \\alpha_{src} + \\alpha_{dst} - \\alpha_{src} * \\alpha_{dst}\\)\u003c/p\u003e\n+         * \u003cp\u003e\\(\\begin{equation}\n+         * C_{out} \u003d \\begin{cases} 2 * C_{src} * C_{dst} \u0026 2 * C_{dst} \\lt \\alpha_{dst} \\\\\n+         * \\alpha_{src} * \\alpha_{dst} - 2 (\\alpha_{dst} - C_{src}) (\\alpha_{src} - C_{dst}) \u0026 otherwise \\end{cases}\n+         * \\end{equation}\\)\u003c/p\u003e\n+         */\n         OVERLAY     (15);\n \n         Mode(int nativeInt) {\n@@ -71,14 +370,14 @@\n     /**\n      * @hide\n      */\n-    public static final int modeToInt(Mode mode) {\n+    public static int modeToInt(Mode mode) {\n         return mode.nativeInt;\n     }\n \n     /**\n      * @hide\n      */\n-    public static final Mode intToMode(int val) {\n+    public static Mode intToMode(int val) {\n         switch (val) {\n             default:\n             case  0: return Mode.CLEAR;\n",
  "projectName": "android.platform_frameworks_base",
  "bugLineNum": 71,
  "bugNodeStartChar": 2196,
  "bugNodeLength": 112,
  "fixLineNum": 71,
  "fixNodeStartChar": 2196,
  "fixNodeLength": 106,
  "sourceBeforeFix": "25",
  "sourceAfterFix": "9"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant