{"id":300239,"date":"2020-03-17T09:00:19","date_gmt":"2020-03-17T09:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=300239"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=300239","title":{"rendered":"\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 Java-\u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/solarsecurity\/blog\/489844\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vz\/7t\/oj\/vz7toj5s5igyl9icj0gh4hrxmwc.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u2014 <strong>Fernflower<\/strong>, <strong>CFR<\/strong>, <strong>Procyon<\/strong> \u0438 <strong>jadx<\/strong> \u2014 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.<\/p>\n<p>  <\/p>\n<p><strong>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/strong>: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u043e\u0441\u0442\u044c. \u0421\u043a\u043e\u0440\u0435\u0435, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0437\u043e\u0440 \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 (\u043d\u0430 \u043e\u0441\u0435\u043d\u044c 2019) \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 Java-\u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p><strong>\u0410\u0432\u0442\u043e\u0440 \u2014 \u0410\u043d\u043d\u0430 \u042f\u0432\u0435\u0439\u043d, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0430 Solar appScreener<\/strong><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"predystoriya\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h1>\n<p>  <\/p>\n<p>\u041d\u0430\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2014 <a href=\"https:\/\/rt-solar.ru\/products\/solar_appscreener\/\">Solar appScreener<\/a> \u2014 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u0434\u0435. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 Java-\u0431\u0430\u0439\u0442\u043a\u043e\u0434. \u041d\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u0430\u043b\u043e: \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c &quot;\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 147-\u0443\u044e \u0431\u0430\u0439\u0442\u043a\u043e\u0434-\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u043c-\u0442\u043e&quot;. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443, \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. <\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0430 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b? \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043d\u0430\u0439\u0442\u0438 \u0432 \u043d\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c, \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0432 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u043a\u043e\u0434;<\/li>\n<li>\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435 \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043d\u0435\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043c\u044b \u0441\u0442\u0440\u043e\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c, \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/solarsecurity\/blog\/312056\/\">\u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438<\/a>. <\/p>\n<p>  <\/p>\n<p>\u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043e \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0435: \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. <\/p>\n<p>  <\/p>\n<h1 id=\"chto-nam-nuzhno-ot-dekompilyatora\">\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430<\/h1>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043d\u044b\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e <strong>Fernflower<\/strong> \u2014 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 (analytical) \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0438\u0433\u0434\u0435 \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u043e \u0438\u0434\u0435\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0438 \u0434\u0435\u043e\u0431\u0444\u0443\u0441\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430 (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430). \u0412 \u0446\u0435\u043b\u043e\u043c, \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c \u0434\u043b\u044f \u043d\u0430\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0442\u0430\u043a\u043e\u0432\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0438 (\u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438) \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435;<\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430 (<code>foreach<\/code>, <code>try-with-resources<\/code>, etc).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043a \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"instrumenty\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h1>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0441\u0430\u043c\u044b\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u043e\u0441\u0435\u043d\u044c 2019 \u0433\u043e\u0434\u0430). \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u0431\u0440\u0430\u043a\u043e\u0432\u0430\u043d\u044b \u0435\u0449\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c. <\/p>\n<p>  <\/p>\n<ul>\n<li><strong>Fernflower<\/strong> \u2014 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 JetBrains. \u041a\u043e\u0434 <a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/tree\/master\/plugins\/java-decompiler\/engine\">\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 GitHub<\/a>.<\/li>\n<li><strong>CFR<\/strong> (0.146) \u2014 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, <a href=\"http:\/\/www.benf.org\/\">\u043e\u0434\u043d\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e &quot;for fun&quot;. <a href=\"https:\/\/github.com\/leibnitz27\/cfr\">\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 GitHub<\/a>. <a href=\"http:\/\/www.benf.org\/other\/cfr\/index.html\">\u0421\u0430\u0439\u0442 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435<\/a>.<\/li>\n<li><strong>Procyon<\/strong> (0.5.36) \u2014 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u043e\u0434\u0430 \u043d\u0430 Java. \u0421\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/bitbucket.org\/mstrobel\/procyon\/wiki\/Java%20Decompiler\">\u0445\u043e\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u0430 Bitbucket<\/a>.<\/li>\n<li><strong>jadx<\/strong> (1.0.0) \u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f Dalvik, \u0430 \u043d\u0435 \u0434\u043b\u044f JVM. \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 <a href=\"https:\/\/github.com\/skylot\/jadx\">\u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 GitHub<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b, \u043d\u043e \u043d\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043f\u0440\u044f\u0442\u0430\u043d \u0437\u0434\u0435\u0441\u044c.<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><strong>JD-Core<\/strong> (\u043e\u043d \u0436\u0435 <a href=\"http:\/\/java-decompiler.github.io\/\"><strong>JD Project<\/strong><\/a>) \u2014 \u043d\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f \u0441\u0440\u0435\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 gui). \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 cli, \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u043a\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0441\u0435\u043f\u0448\u043d\u0430\u043c\u0438.<\/li>\n<li><strong>Krakatau<\/strong> \u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435, \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Java 8.<\/li>\n<li><strong>JAD<\/strong> \u2014 \u0431\u0435\u0437\u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u0436\u0435 Java 5).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0435\u0449\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 Windows: <strong>Cavaj<\/strong>, <strong>DJ Java Decompiler<\/strong>, <strong>JBVD<\/strong>, <strong>AndroChef<\/strong>. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0433\u0434\u0435-\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0435\u0449\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b, \u043d\u043e \u043c\u043d\u0435 \u043e \u043d\u0438\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u0418 \u044d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043a \u043b\u0443\u0447\u0448\u0435\u043c\u0443&#8230;<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u0445:<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Fernflower<\/th>\n<th>CFR<\/th>\n<th>Procyon<\/th>\n<th>jadx<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f<\/strong><\/td>\n<td>Apache 2.0<\/td>\n<td>MIT<\/td>\n<td>Apache 2.0<\/td>\n<td>Apache 2.0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430<\/strong><\/td>\n<td><a href=\"https:\/\/github.com\/fesh0r\/fernflower\">\u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u043e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a><\/td>\n<td>Maven: org.benf.cfr<\/td>\n<td>Maven: org.bitbucket.mstrobel<\/td>\n<td><a href=\"https:\/\/bintray.com\/skylot\/jadx\">Bintray<\/a><\/td>\n<\/tr>\n<tr>\n<td><strong>\u041a\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Java \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/strong><\/td>\n<td>\u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e<\/td>\n<td>8, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e 9<\/td>\n<td>\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c 8<\/td>\n<td>\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e 8<\/td>\n<\/tr>\n<tr>\n<td><strong>\u041d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430<\/strong><\/td>\n<td>Java 8<\/td>\n<td>Java 6<\/td>\n<td>Java 7<\/td>\n<td>Java 8<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/strong><\/td>\n<td>\u043d\u0435\u0442<\/td>\n<td><a href=\"http:\/\/www.benf.org\/other\/cfr\/api\/index.html\">\u0435\u0441\u0442\u044c!<\/a><\/td>\n<td><a href=\"https:\/\/bitbucket.org\/mstrobel\/procyon\/wiki\/Decompiler%20API\">\u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e<\/a><\/td>\n<td><a href=\"https:\/\/github.com\/skylot\/jadx\/blob\/master\/README.md\">README \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e <strong>jadx<\/strong> \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u0434 Android. \u0418 \u0447\u0442\u043e\u0431\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 <strong>jvm<\/strong>, \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <strong>dx<\/strong>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430, \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 <strong>jadx<\/strong> \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b <strong>jadx<\/strong> \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<br \/>  \u0422\u0430\u043a\u0436\u0435 <strong>jadx<\/strong> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 DEX \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e 37 \u0432\u0435\u0440\u0441\u0438\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0443 \u043d\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043b\u044f\u043c\u0431\u0434.<\/p>\n<p>  <\/p>\n<h1 id=\"sravnenie\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u0412 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 <strong>Fernflower<\/strong> (<a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/commit\/3e1257459560a5b3c7ba67096347eb67302eabf0#diff-20810b5ccdbdeab8b11cfecad864a39\">\u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u0413\u0438\u0442\u0445\u0430\u0431\u0430 \u0437\u0430 16.09.19<\/a>), <strong>CFR<\/strong> (0.146), <strong>Procyon<\/strong> (0.5.36) \u0438 <strong>jadx<\/strong> (1.0.0). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 <strong>jadx<\/strong> \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c. <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u2014 \u0441\u0430\u043c <strong>Fernflower<\/strong>, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0435\u0433\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 Java 8. \u041f\u0440\u0438\u0447\u0435\u043c \u0432 \u043a\u043e\u0434\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u044f\u0437\u044b\u043a\u0430. \u041a\u043e\u0434 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Java \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u044b\u043b\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u2014 <strong>Procyon<\/strong> \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Java 9 \u0432\u043e\u043e\u0431\u0449\u0435, \u0430 <strong>CFR<\/strong> \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0438\u0447 (\u043f\u0440\u043e <strong>Fernflower<\/strong> \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0442\u0440\u043e\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0442\u0443\u0442.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">java -jar fernflower.jar -dgs=1 -asc=1 -ind=&quot;    &quot; &lt;input-jar&gt; &lt;output-dir&gt; java -jar cfr-0.146.jar &lt;input-jar&gt; --outputpath &lt;output-dir&gt; java -jar procyon-decompiler-0.5.36.jar -jar &lt;input-jar&gt; -o &lt;output-dir&gt; .\/bin\/jadx -d &lt;output-dir&gt; &lt;input-jar&gt; --show-bad-code<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <a href=\"#results\">\u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"metriki\">\u041c\u0435\u0442\u0440\u0438\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<li>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/li>\n<li>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c.<\/li>\n<li>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0438\u0447 \u044f\u0437\u044b\u043a\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"podderzhka-i-aktivnost-proekta\">\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>  <\/p>\n<h3 id=\"fernflower\">Fernflower<\/h3>\n<p>  <\/p>\n<p>\u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Intellij IDEA, \u0447\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. <\/p>\n<p>  <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, <strong>Fernflower<\/strong> \u2014 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Intellij IDEA. \u0423 \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 (\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0435 \u0432\u044b\u0448\u0435 <a href=\"https:\/\/github.com\/fesh0r\/fernflower\">\u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u043e<\/a>, \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c <strong>Fernflower<\/strong> \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c). <\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0443\u0434\u0438\u0442\u044c \u043f\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435, \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 \u0432 <code>master<\/code> \u0441\u043b\u0443\u0447\u0438\u043b\u0441\u044f 3 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u0435\u043d\u044c 2019). \u0422\u043e\u0447\u043d\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0442\u0440\u0443\u0434\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Intellij IDEA.<\/p>\n<p>  <\/p>\n<h3 id=\"cfr\">CFR<\/h3>\n<p>  <\/p>\n<p>\u041a\u043e\u0434 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c, \u043d\u043e \u0440\u0435\u043b\u0438\u0437\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e (\u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0430\u0437 \u0432 \u0433\u043e\u0434). \u041d\u0430 \u0432\u0441\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0443 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443, \u043e\u043d \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043d\u0435\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u0435\u043b\u0438-\u0434\u0432\u0443\u0445. \u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b\u0448\u0435\u043b \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 (0.147), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0447\u0438\u043d\u0435\u043d\u0430 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e.<\/p>\n<p>  <\/p>\n<h3 id=\"procyon\">Procyon<\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u044d\u0442\u0438\u043c \u043b\u0435\u0442\u043e\u043c (2019) \u0434\u0430\u0436\u0435 \u0431\u044b\u043b \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437. \u041d\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0447\u0438\u043d\u0435\u043d\u044b \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0430\u0433\u0438. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442, \u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <\/p>\n<h3 id=\"jadx\">jadx<\/h3>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0438\u0448\u044c\u044e-\u0442\u0440\u0435\u043a\u0435\u0440 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u043e\u0447\u0435\u043d\u044c \u0436\u0438\u0432\u044b\u0435 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435. 20 \u0438\u044e\u043d\u044f 2019 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0438 1.0.0. \u041d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 DVM \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"kolichestvo-oshibok-pri-sborke-rezultata-dekompilyacii\">\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/h2>\n<p>  <\/p>\n<p>\u0421\u0443\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0431\u044b\u043b\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043a\u043e\u0434. <\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 <strong>jadx<\/strong> \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0431\u0440\u043e\u0441\u0430\u0435\u0442 39 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 <code>fernflower.jar<\/code> \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430. <\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0448\u0438\u0431\u043e\u043a: \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 (\u0438\u0445 \u043d\u0435 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0439, \u0445\u043e\u0442\u044f \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u043d\u0430\u0437\u0430\u0434 \u0432 <strong>CFR<\/strong> \u0438\u0445 \u0431\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e); \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 (\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0443 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u0432, \u043d\u0435\u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432), \u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u044b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u043e\u0432, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0438\u043f\u044b;<\/li>\n<li>\u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0447\u0430\u0449\u0435, \u0447\u0435\u043c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0437\u044f\u0442\u044b\u0435;<\/li>\n<li>\u043e\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0442\u0438\u043f\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e (\u0445\u043e\u0442\u044f <strong>CFR<\/strong> \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u043a\u0430\u043c). <\/p>\n<p>  <\/p>\n<p>\u0418\u0437 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043d\u0430\u043c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><strong>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/strong><\/th>\n<th><strong>\u0412\u0441\u0435 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/strong><\/th>\n<th><strong>\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438<\/strong><\/th>\n<th><strong>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Fernflower<\/strong><\/td>\n<td>0<\/td>\n<td>101<\/td>\n<td>65<\/td>\n<td>36<\/td>\n<\/tr>\n<tr>\n<td><strong>CFR<\/strong><\/td>\n<td>0<\/td>\n<td>82<\/td>\n<td>80<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td><strong>Procyon<\/strong><\/td>\n<td>0<\/td>\n<td>79<\/td>\n<td>61<\/td>\n<td>16<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>Fernflower<\/strong>, \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u0438\u0447\u0435\u043c 34 \u0438\u0437 36 \u2014 \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0438\u0434\u0430 <code>variable &lt;var&gt; is already defined<\/code>. \u0414\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0443 <strong>CFR<\/strong> \u0442\u043e\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 <strong>Procyon<\/strong>&#8216;\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e (10 \u0438\u0437 16) \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0438\u043f\u0430 <code>boolean<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0432 <a href=\"#ternary\">\u0441\u0435\u043a\u0446\u0438\u0438 \u043d\u0438\u0436\u0435<\/a>).<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e <strong>CFR<\/strong> \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u0443\u043b\u0443\u0447\u0448\u0438\u0432\u0448\u0438\u0439 \u0441\u0432\u043e\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 4 \u043c\u0435\u0441\u044f\u0446\u0430. \u0420\u0430\u043d\u044c\u0448\u0435 \u0443 \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u043e 10 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 \u0438 72 \u2014 \u043f\u0440\u043e \u0442\u0438\u043f\u044b. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e &quot;\u0442\u0438\u043f\u043e\u0432\u044b\u0445&quot; \u043e\u0448\u0438\u0431\u043e\u043a \u0443 <strong>CFR<\/strong> \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0443 \u043d\u0435\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  <\/p>\n<h2 id=\"skorost\">\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c<\/h2>\n<p>  <\/p>\n<p><strong>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/strong>: \u0435\u0449\u0435 \u0440\u0430\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u043d\u0430\u0443\u0447\u043d\u043e\u0441\u0442\u044c. <\/p>\n<p>  <\/p>\n<p>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u043f\u043e\u0440\u043d\u043e: \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u0436\u0430\u0440\u043d\u0438\u043a\u0430\u0445 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u044f\u0441\u043d\u044f\u043b\u043e\u0441\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f 100 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430 JAR-\u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 5.2M (JAR-\u0444\u0430\u0439\u043b, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 <code>.class<\/code> \u0444\u0430\u0439\u043b\u043e\u0432).<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><strong>\u0412\u0440\u0435\u043c\u044f \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Fernflower<\/strong><\/td>\n<td>74<\/td>\n<\/tr>\n<tr>\n<td><strong>CFR<\/strong><\/td>\n<td>43<\/td>\n<\/tr>\n<tr>\n<td><strong>Procyon<\/strong><\/td>\n<td>74<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u044f 15 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043d\u0430 JAR-\u0444\u0430\u0439\u043b\u0435 \u0432 14M.<\/p>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><strong>\u0412\u0440\u0435\u043c\u044f \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Fernflower<\/strong><\/td>\n<td>939<\/td>\n<\/tr>\n<tr>\n<td><strong>CFR<\/strong><\/td>\n<td>128<\/td>\n<\/tr>\n<tr>\n<td><strong>Procyon<\/strong><\/td>\n<td>573<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  <\/p>\n<p>\u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u044d\u0442\u0438\u0445 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0430\u0441\u0438\u043c\u043f\u0442\u043e\u0442\u0438\u043a\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c <strong>CFR<\/strong> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432, \u0430 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 <strong>Fernflower<\/strong> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, 14M \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0432\u0430 <code>.class<\/code> \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e. <\/p>\n<p>  <\/p>\n<h2 id=\"obrabotka-konkretnyh-fich-yazyka\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0444\u0438\u0447 \u044f\u0437\u044b\u043a\u0430<\/h2>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044f\u0437\u044b\u043a\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u043b\u0430 \u0442\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0435\u0437\u044e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0434\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 <strong>jadx<\/strong>, \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b. \u0414\u043b\u044f <strong>jadx<\/strong> \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0432\u0437\u044f\u0442 Android \u043f\u0440\u0435\u043a\u0442.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/1d\/sp\/u8\/1dspu85soltjfw3brnkjczl2nmc.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<h3 id=\"anchorfor-eachanchor-for-each\"><a name=\"for-each\"><\/a> for-each<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/code\/FullInstructionSequence.java\">FullInstructionSequence.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">for (ExceptionHandler handler : handlers) {     handler.from_instr = this.getPointerByAbsOffset(handler.from);     handler.to_instr = this.getPointerByAbsOffset(handler.to);     handler.handler_instr = this.getPointerByAbsOffset(handler.handler); }<\/code><\/pre>\n<p>  <\/p>\n<p><strong>Fernflower<\/strong> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <code>for-each<\/code> \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u044b. \u041f\u0440\u0438\u0447\u0435\u043c \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u044d\u0442\u043e \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c <code>handler<\/code> \u0437\u0430\u0441\u043e\u0440\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0443 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>var3<\/code> \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0442\u0438\u043f\u0430, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a <code>unchecked cast<\/code> \u0432 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">ExceptionHandler handler; for (Iterator var3 = handlers.iterator(); var3.hasNext(); handler.handler_instr = this.getPointerByAbsOffset(handler.handler)) {     handler = (ExceptionHandler)var3.next();     handler.from_instr = this.getPointerByAbsOffset(handler.from);     handler.to_instr = this.getPointerByAbsOffset(handler.to); }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"anchorternaryanchor-ternarnyy-operator-pri-indeksacii-massiva\"><a name=\"ternary\"><\/a> \u0422\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/sforms\/SSAConstructorSparseEx.java\">SSAConstructorSparseEx.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">varmaparr[varmaparr[1] == null ? 0 : 1]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 <strong>Procyon<\/strong>&#8216;\u0430. \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0440, \u043d\u0435 \u0438\u043c\u0435\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">varmaparr[varmaparr[1] != null];<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"anchorstaticanchor-staticheskoe-pole-v-interfeyse\"><a name=\"static\"><\/a> \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/main\/extern\/IFernflowerPreferences.java\">IFernflowerPreferences.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public interface IFernflowerPreferences {     Map&lt;String, Object&gt; DEFAULTS = getDefaults();      static Map&lt;String, Object&gt; getDefaults() { ... } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0430\u044f\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <strong>Procyon<\/strong>. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <code>default<\/code>, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u043c\u0435\u0441\u0442\u043e <code>static<\/code> \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 <code>getDefaults()<\/code>, \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public interface IFernflowerPreferences {     public static final Map&lt;String, Object&gt; DEFAULTS = getDefaults();      \/\/ Error: non-static method getDefaults()      \/\/ cannot be referenced from a static context.         default Map&lt;String, Object&gt; getDefaults() { return ... } }<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"ostalnye-oshibki\">\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/h2>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0443\u0433\u0430\u0442\u044c \u043d\u0430\u0440\u043e\u0434, \u043e\u043d\u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u043e\u043c.<\/b><\/p>\n<div class=\"spoiler_text\">\n<h3 id=\"yavnyy-unboxing\">\u042f\u0432\u043d\u044b\u0439 unboxing<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/vars\/VarVersionPair.java\">VarVersionPair.java<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/vars\/VarVersionsProcessor.java\">VarVersionsProcessor.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class VarVersionPair {        public final int var;     public final int version;      public VarVersionPair(int var, int version) {         this.var = var;         this.version = version;     }      public VarVersionPair(Integer var, Integer version) {         this.var = var;         this.version = version;     } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   new VarVersionPair(ent.getKey().var \/* int *\/, version.intValue() \/* int *\/);<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-1\">Fernflower<\/h4>\n<p>  <\/p>\n<p>\u041d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. <\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class VarVersionPair {     public final int var;     public final int version;      public VarVersionPair(int var, int version) {         this.var = var;         this.version = version;     }      public VarVersionPair(Integer var, Integer version) {         this.var = var;         this.version = version;     } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  new VarVersionPair(((VarVersionPair)ent.getKey()).var\/* int *\/, version\/* Integer *\/);<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-1\">Procyon<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">public class VarVersionPair {     public final int var;     public final int version;      public VarVersionPair(final int var, final int version) {         this.var = var;         this.version = version;     }      public VarVersionPair(final Integer var, final Integer version) {         this.var = var;         this.version = version;     } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  new VarVersionPair(ent.getKey().var \/* int *\/, (int)version \/* int *\/);<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-1\">CFR<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">public class VarVersionPair {     public final int var;     public final int version;      public VarVersionPair(int var, int version) {         this.var = var;         this.version = version;     }      public VarVersionPair(Integer var, Integer version) {         this.var = var;         this.version = version;     } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  new VarVersionPair(ent.getKey().var \/* int *\/, (int)version \/* int *\/);<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx\">dx + jadx<\/h4>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432. <\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public class VarVersionPair {     public final int var;     public final int version;      public VarVersionPair(int var, int version) {         this.var = var2;         this.version = version2;     }      public VarVersionPair(Integer var, Integer version) {         this.var = var.intValue();         this.version = version.intValue();     } }  \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  new VarVersionPair(((VarVersionPair) ent.getKey()).var \/* int *\/, ((Integer) it.next()).intValue() \/* int *\/);<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"try-with-resources\">Try-with-resources<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/main\/decompiler\/ConsoleDecompiler.java\">ConsoleDecompiler.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">try (Writer out = new OutputStreamWriter(...)) {     &lt;try-body&gt; } catch (IOException ex) {    &lt;catch-body&gt; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-2\">Fernflower<\/h4>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <code>try-with-resources<\/code> \u0441\u043e\u0432\u0441\u0435\u043c. \u0417\u0430\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>try-catch<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0439 (:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">try {     Writer out = new OutputStreamWriter(...);     Throwable var8 = null;     try {         &lt;try-body&gt;     } catch (Throwable var18) {         var8 = var18;         throw var18;     } finally {         if (out != null) {             if (var8 != null) {                 try {                     out.close();                 } catch (Throwable var17) {                     var8.addSuppressed(var17);                 }             } else {                 out.close();             }         }     } } catch (IOException var20) {     &lt;catch-body&gt; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-2\">CFR<\/h4>\n<p>  <\/p>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f: \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 0.142 <code>try-with-resources<\/code> \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0430 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 0.146 \u043d\u0430\u0447\u0430\u043b \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043b\u0438\u0448\u043d\u0438\u0439 <code>try<\/code>. <\/p>\n<p>  <\/p>\n<p>UPD: \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 0.147.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">try {     try (OutputStreamWriter out = new OutputStreamWriter(...);){         out.write(content);     } } catch (IOException ex) {     &lt;catch-body&gt; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-2\">Procyon<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">try (final Writer out = new OutputStreamWriter(...)) {     out.write(content); } catch (IOException ex) {     &lt;catch-body&gt; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-with---show-bad-code-option\">dx + jadx (with <code>--show-bad-code<\/code> option)<\/h4>\n<p>  <\/p>\n<p><strong>jadx<\/strong> \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">\/* JADX WARNING: Code restructure failed: missing block: B:20:0x0048, code lost:     r3 = move-exception;  *\/ \/* JADX WARNING: Code restructure failed: missing block: B:21:0x0049, code lost:     if (r2 != null) goto L_0x004b;  *\/ \/* JADX WARNING: Code restructure failed: missing block: B:22:0x004b, code lost:     if (r4 != null) goto L_0x004d;  *\/ \/* JADX WARNING: Code restructure failed: missing block: B:24:?, code lost:     r2.close();  *\/ \/* JADX WARNING: Code restructure failed: missing block: B:26:?, code lost:     throw r3;  *\/ \/* JADX WARNING: Code restructure failed: missing block: B:29:0x0056, code lost:     r2.close();  *\/ ... try {     Writer out = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);     Throwable th = null;     &lt;try-body&gt;     if (out == null) {         return;     }     if (th != null) {         try {             out.close();         } catch (Throwable th2) {             th.addSuppressed(th2);         }     } else {         out.close();     } } catch (IOException ex) {     &lt;catch-body&gt; } catch (Throwable th3) {     r4.addSuppressed(th3); }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"lyambdy\">\u041b\u044f\u043c\u0431\u0434\u044b<\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/main\/ClassReference14Processor.java\">ClassReference14Processor.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">graph.iterateExprents(exprent -&gt; {     for (Entry&lt;ClassWrapper, MethodWrapper&gt; ent : mapClassMeths.entrySet()) {         &lt;body&gt;     }     return 0; });<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-3\">Fernflower<\/h4>\n<p>  <\/p>\n<p>\u041b\u044f\u043c\u0431\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 <code>for-each<\/code> \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043b\u044f\u043c\u0431\u0434\u043e\u0439 \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0431\u0435\u0437 \u043d\u0435\u0435 (\u0441\u043c <a href=\"#for-each\"><code>\u0441\u0435\u043a\u0446\u0438\u044e \u043f\u0440\u043e for-each<\/code><\/a>).<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">graph.iterateExprents((exprentx) -&gt; {     Iterator var3 = mapClassMeths.entrySet().iterator();     while(var3.hasNext()) {         Entry&lt;ClassWrapper, MethodWrapper&gt; ent = (Entry)var3.next();         &lt;body&gt;     }     return 0; });<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-3\">Procyon<\/h4>\n<p>  <\/p>\n<p><code>for-each<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043b\u044f\u043c\u0431\u0434\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e (\u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 \u0441\u0430\u043c\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 <code>for-each<\/code> <strong>Procyon<\/strong> \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <code>ent<\/code> \u0438 <code>iterator2<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u043b\u044f\u043c\u0431\u0434\u044b, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043e\u0448\u0438\u0431\u043a\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a <code>ent<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>effectively final<\/code> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">final Iterator&lt;Map.Entry&lt;ClassWrapper, MethodWrapper&gt;&gt; iterator2; Map.Entry&lt;ClassWrapper, MethodWrapper&gt; ent;  graph.iterateExprents(exprent -&gt; {     \/\/ it probably tried to initialize iterator here but it failed miserably...     mapClassMeths.entrySet().iterator();            while (iterator2.hasNext()) {         ent = iterator2.next();         &lt;body&gt;     }     return 0; });<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-3\">CFR<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">graph.iterateExprents(exprent -&gt; {     for (Map.Entry ent : mapClassMeths.entrySet()) {         &lt;body&gt;     }     return 0; });<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-1\">dx + jadx<\/h4>\n<p>  <\/p>\n<p><strong>jadx<\/strong> \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u041d\u0430 \u0413\u0438\u0442\u0445\u0430\u0431\u0435 \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0448\u0430\u044f <a href=\"https:\/\/github.com\/skylot\/jadx\/issues\/384\">\u0437\u0430\u0434\u0430\u0447\u0430<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">\/* \/\/ Can't load method instructions: Load method exception: Unknown instruction: 'invoke-custom\/range' in method:      org.jetbrains.java.decompiler.main.ClassReference14Processor.processClassRec(org.jetbrains.java.decompiler.main.ClassesProcessor$ClassNode, java.util.Map, java.util.Set):void, dex: classes.dex *\/ throw new UnsupportedOperationException(&quot;Method not decompiled: org.jetbrains.java.decompiler.main.ClassReference14Processor.processClassRec(org.jetbrains.java.decompiler.main.ClassesProcessor$ClassNode, java.util.Map, java.util.Set):void&quot;); <\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"dve-inicializacii-v-odnom--for\">\u0414\u0432\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c <code>for<\/code><\/h3>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/code\/SwitchInstruction.java\">SwitchInstruction.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">for (int i = 0, k = 0; i &lt; len; i++, k++) {     if (&lt;condition&gt;) {         ...         k++;     }     ... }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-4\">Fernflower<\/h4>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>i<\/code> \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u043a\u043e\u0443\u043f \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">int i = 0; for(int k = 0; i &lt; len; ++k) {     if (&lt;condition&gt;) {         ...         ++k;     }     ...     ++i; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-4\">Procyon<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">for (int i = 0, k = 0; i &lt; len; ++i, ++k) {     if (&lt;condition&gt;) {         ...         ++k;     }     ... }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-4\">CFR<\/h4>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0443\u0436\u0435 \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (\u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442).<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">int i = 0; int k = 0; while (i &lt; len) {     if (&lt;condition&gt;) {         ...         ++k;     }     ...     ++i;     ++k; }<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-2\">dx + jadx<\/h4>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441 <strong>CFR<\/strong>.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">int i = 0; int k = 0; while (i &lt; len) {     if (&lt;condition&gt;) {         ...         k++;     }     ...     i++;     k++; }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"generics\">Generics<\/h3>\n<p>  <\/p>\n<p>\u041f\u0430\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 \u0432\u0435\u043b\u0438\u043a\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430.<\/p>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/ConcatenationHelper.java\">ConcatenationHelper.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">List&lt;Exprent&gt; lstOperands = new ArrayList&lt;&gt;();<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-5\">Fernflower<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">ArrayList lstOperands = new ArrayList();<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-5\">Procyon<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">final List&lt;Exprent&gt; lstOperands = new ArrayList&lt;Exprent&gt;();<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-5\">CFR<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">ArrayList&lt;Exprent&gt; lstOperands = new ArrayList&lt;Exprent&gt;();<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-3\">dx + jadx<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">List&lt;Exprent&gt; lstOperands = new ArrayList&lt;&gt;();<\/code><\/pre>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/vars\/VarTypeProcessor.java\">VarTypeProcessor.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">LinkedList&lt;Statement&gt; stack = new LinkedList&lt;&gt;(); stack.add(root);                \/\/ root : RootStatement stack.addAll(stat.getStats());  \/\/ stat.getStats() : Collection&lt;Statements&gt;<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-6\">Fernflower<\/h4>\n<p>  <\/p>\n<p><code>unchecked assignment<\/code> \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">LinkedList&lt;Statement&gt; stack = new LinkedList(); stack.add(root); stack.addAll(stat.getStats())<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-6\">Procyon<\/h4>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0445\u043e\u0442\u044f \u0438 \u0446\u0435\u043d\u043e\u0439 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0438 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">final LinkedList&lt;Statement&gt; stack = new LinkedList&lt;Statement&gt;(); stack.add(root); stack.addAll((Collection&lt;? extends Statement&gt;)stat.getStats());<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-6\">CFR<\/h4>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e <code>Statement<\/code> \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 <code>&lt;RootStatement&gt;<\/code>. <\/p>\n<p>  <\/p>\n<pre><code class=\"java\">LinkedList&lt;RootStatement&gt; stack = new LinkedList&lt;RootStatement&gt;(); stack.add(root); stack.addAll(stat.getStats()); <\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-4\">dx + jadx<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">LinkedList&lt;Statement&gt; stack = new LinkedList&lt;&gt;(); stack.add(root); stack.addAll(stat.getStats()); <\/code><\/pre>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p><a href=\"https:\/\/github.com\/JetBrains\/intellij-community\/blob\/master\/plugins\/java-decompiler\/engine\/src\/org\/jetbrains\/java\/decompiler\/modules\/decompiler\/stats\/Statement.java\">Statement.java<\/a><\/p>\n<p>  <\/p>\n<pre><code class=\"java\">protected HashSet&lt;Statement&gt; continueSet = new HashSet&lt;&gt;(); ... continueSet.addAll(st.buildContinueSet());<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"fernflower-7\">Fernflower<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">protected HashSet&lt;Statement&gt; continueSet = new HashSet&lt;&gt;(); ... this.continueSet.addAll(st.buildContinueSet());<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"procyon-7\">Procyon<\/h4>\n<p>  <\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">protected HashSet&lt;Statement&gt; continueSet; ... public Statement() {     this.continueSet = new HashSet&lt;Statement&gt;();     ... } ... this.continueSet.addAll((Collection&lt;?&gt;)st.buildContinueSet());<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"cfr-7\">CFR<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">protected HashSet&lt;Statement&gt; continueSet = new HashSet&lt;&gt;();; ... this.continueSet.addAll(st.buildContinueSet());<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"dx--jadx-5\">dx + jadx<\/h4>\n<p>  <\/p>\n<pre><code class=\"java\">protected HashSet&lt;Statement&gt; continueSet; ... this.continueSet.addAll(st.buildContinueSet());<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"rabota-jadx-na-dex-fayle\">\u0420\u0430\u0431\u043e\u0442\u0430 jadx \u043d\u0430 dex \u0444\u0430\u0439\u043b\u0435<\/h2>\n<p>  <\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0430, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <strong>jadx<\/strong> \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c Android \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u2014 AntennaPod (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u043e\u0432). <\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u0430\u043c\u044b\u0435 \u043e\u0434\u0438\u043e\u0437\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0443\u0442.<\/b><\/p>\n<div class=\"spoiler_text\">\n<h3 id=\"staticheskie-polya\">\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u043b\u044f<\/h3>\n<p>  <\/p>\n<p>\u0423 <strong>jadx<\/strong> \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u043e\u043b\u044f\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">private static Context context;  public static void init(Context context) {   UpdateManager.context = context;   ... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u043e\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">private static Context context;  public static void init(Context context) {   context = context;   ... }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"lyambdy-i-anonimnye-klassy\">\u041b\u044f\u043c\u0431\u0434\u044b \u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043b\u044f\u043c\u0431\u0434\u0443 \u0438\u043b\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 <strong>jadx<\/strong> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u0442\u0430\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0439 \u043b\u044f\u043c\u0431\u0434\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">(item1, item2) -&gt; compareLong(item1.timePlayed, item2.timePlayed)<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">\/* compiled from: lambda *\/ \/* renamed from: de.danoeh.antennapod.core.storage.-$$Lambda$DBReader$J14FiokVfxZ2H5XUZEtHQOEEq_0 *\/ public final \/* synthetic *\/ class $$Lambda$DBReader$J14FiokVfxZ2H5XUZEtHQOEEq_0 implements Comparator {   public static final \/* synthetic *\/    $$Lambda$DBReader$J14FiokVfxZ2H5XUZEtHQOEEq_0 INSTANCE              = new $$Lambda$DBReader$J14FiokVfxZ2H5XUZEtHQOEEq_0();    private \/* synthetic *\/ $$Lambda$DBReader$J14FiokVfxZ2H5XUZEtHQOEEq_0() { }    public final int compare(Object obj, Object obj2) {     return DBReader.compareLong(((StatisticsItem)obj).timePlayed,                                  ((StatisticsItem)obj2).timePlayed);   } }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"htonicheskiy-uzhas-s-dobavleniyami-i-udaleniyami-peremennyh\">\u0425\u0442\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0436\u0430\u0441 \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/h3>\n<p>  <\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <em>\u0440\u0435\u0437\u043a\u043e<\/em> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0411\u044b\u043b\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public Feed(...) {     this(id, lastUpdate, title, null, link,           description, paymentLink, author,           language, type, feedIdentifier, imageUrl,          fileUrl, downloadUrl, downloaded,           new FlattrStatus(), false, null, null, false); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043b\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">public Feed(...) {     long j = id;     String str = lastUpdate;     String str2 = title;     String str3 = link;     String str4 = description;     String str5 = paymentLink;     String str6 = author;     String str7 = language;     String str8 = type;     String str9 = feedIdentifier;     String str10 = imageUrl;     String str11 = fileUrl;     String str12 = downloadUrl;     boolean z = downloaded;     FlattrStatus flattrStatus = r5;     FlattrStatus flattrStatus2 = new FlattrStatus();     this(j, str, str2, null, str3,           str4, str5, str6,           str7, str8, str9, str10,           str11, str12, z,           flattrStatus, false, null, null, false); }<\/code><\/pre>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p>\u0410 \u0438\u043d\u043e\u0433\u0434\u0430, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, <strong>jadx<\/strong> \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u043d\u0435\u0443\u0433\u043e\u0434\u043d\u044b\u0445 \u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0411\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">URL url = new URI(BASE_SCHEME, BASE_HOST,                    String.format(&quot;\/api\/2\/tags\/%d.json&quot;, count), null).toURL(); Request.Builder request = new Request.Builder().url(url); String response = executeRequest(request); JSONArray jsonTagList = new JSONArray(response);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">JSONArray jsonTagList      = new JSONArray(executeRequest(new Builder().url(         new URI(BASE_SCHEME,                  this.BASE_HOST,                 String.format(&quot;\/api\/2\/tags\/%d.json&quot;,                  new Object[]{Integer.valueOf(count)}), null).toURL())));<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"ochen-strannyy-sluchay\">\u041e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439<\/h3>\n<p>  <\/p>\n<p>\u041d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a, \u043d\u043e <strong>jadx<\/strong> \u0438\u0437 \u044d\u0442\u043e\u0433\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">final String action = intent.getStringExtra(ARG_ACTION); if (action != null) {   switch(action) {     case ACTION_SYNC:       &lt;code1&gt;     case ACTION_SYNC_SUBSCRIPTIONS:       &lt;code2&gt;     case ACTION_SYNC_ACTIONS:       &lt;code3&gt;     default:       &lt;code4&gt;   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0443\u043c\u0443\u0434\u0440\u0438\u043b\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">String action = intent.getStringExtra(ARG_ACTION);         if (action != null) {             Object obj = -1;             int hashCode = action.hashCode();             if (hashCode != -1744995379) {                 if (hashCode != 29421060) {                     if (hashCode == 1497029227 &amp;&amp; action.equals(ACTION_SYNC_ACTIONS)) {                         obj = 2;                     }                 } else if (action.equals(ACTION_SYNC_SUBSCRIPTIONS)) {                     obj = 1;                 }             } else if (action.equals(ACTION_SYNC)) {                 obj = null;             }   switch (obj) {     case null:       &lt;code1&gt;     case 1:       &lt;code2&gt;     case 2:       &lt;code3&gt;     default:       &lt;code4&gt;   } }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"i-esche-raz\">\u0418 \u0435\u0449\u0435 \u0440\u0430\u0437<\/h3>\n<p>  <\/p>\n<pre><code class=\"java\">if(item != null) {     return item.getId() == id; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432&#8230;<\/p>\n<p>  <\/p>\n<pre><code class=\"java\">FeedItem feedItem = this.item; boolean z = true; if (feedItem != null) {     if (feedItem.getId() != id) {         z = false;     }     return z; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u0434, \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 <strong>jadx<\/strong>, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d \u0432 \u043f\u043b\u0430\u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438, \u0445\u043e\u0442\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0434\u043a\u0438\u0435, \u043d\u043e \u043a\u043e\u0448\u043c\u0430\u0440\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 <strong>jadx<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u043a\u043e\u0434 15 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 switch-case \u0447\u0435\u0440\u0435\u0437 if-else \u0441 \u0442\u0440\u0435\u043c\u044f \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0440\u0442\u044f\u0442 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"anchorresultsanchorrezultaty\"><a name=\"results\"><\/a>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<p>  <\/p>\n<h4 id=\"cfr-8\">CFR<\/h4>\n<p>  <\/p>\n<p>\u041e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 (\u043b\u0443\u0447\u0448\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u0442\u0438\u043f\u0430 <code>for-each<\/code>, <code>try-with-resources<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a), \u0438 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0430 \u0444\u0430\u0439\u043b\u0430\u0445 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430). \u0422\u0430\u043a\u0436\u0435 <strong>CFR<\/strong> \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c. <\/p>\n<p>  <\/p>\n<p>\u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0438, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u044b\u0440\u043e\u0439 (\u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e, \u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438; \u0435\u0449\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043c\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438).<\/p>\n<p>  <\/p>\n<h4 id=\"procyon-8\">Procyon<\/h4>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u043e\u0442 <strong>CFR<\/strong> \u0432 \u0441\u043c\u044b\u0441\u043b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0444\u0438\u0447 Java 9 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435. \u0422\u0430\u043a\u0436\u0435 <strong>Procyon<\/strong> \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0430\u0440\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0433\u0438 (\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 <a href=\"#ternary\">\u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/a> \u0438 <a href=\"#static\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445<\/a>).<\/p>\n<p>  <\/p>\n<h4 id=\"fernflower-8\">Fernflower<\/h4>\n<p>  <\/p>\n<p>\u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447. \u041f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u0430\u043c \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u043d\u0435\u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445). \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, <strong>Fernflower<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Intellij IDEA, \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0443\u043c\u0440\u0435\u0442 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p>  <\/p>\n<h4 id=\"jadx-1\">jadx<\/h4>\n<p>  <\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 (\u0435\u0441\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439) \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Android. \u0414\u0430\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e (\u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0432 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u043d\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434). \u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0447\u0438 \u044f\u0437\u044b\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>try-with-resources<\/code>) \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 DVM \u0441\u0442\u0430\u0440\u0448\u0435 37 \u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u043b\u044f \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 JAR \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<\/p>\n<p>  <\/p>\n<p>P.S. \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f: <a href=\"https:\/\/arxiv.org\/pdf\/1908.06895.pdf\">\u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432<\/a>. \u0421\u0442\u0430\u0442\u044c\u044f \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f, \u043d\u0430\u0443\u0447\u043d\u0430\u044f, \u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043a\u043e\u0434\u0430, \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u043a\u0430\u043a \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/solarsecurity\/blog\/489844\/\"> https:\/\/habr.com\/ru\/company\/solarsecurity\/blog\/489844\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/solarsecurity\/blog\/489844\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vz\/7t\/oj\/vz7toj5s5igyl9icj0gh4hrxmwc.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u2014 <strong>Fernflower<\/strong>, <strong>CFR<\/strong>, <strong>Procyon<\/strong> \u0438 <strong>jadx<\/strong> \u2014 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.<\/p>\n<p>  <\/p>\n<p><strong>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/strong>: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u043e\u0441\u0442\u044c. \u0421\u043a\u043e\u0440\u0435\u0435, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0437\u043e\u0440 \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 (\u043d\u0430 \u043e\u0441\u0435\u043d\u044c 2019) \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 Java-\u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p><strong>\u0410\u0432\u0442\u043e\u0440 \u2014 \u0410\u043d\u043d\u0430 \u042f\u0432\u0435\u0439\u043d, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0430 Solar appScreener<\/strong><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-300239","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=300239"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/300239\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}