{"action":"created","issue":{"url":"https://api.github.com/repos/SpongePowered/Mixin/issues/100","labels_url":"https://api.github.com/repos/SpongePowered/Mixin/issues/100/labels{/name}","comments_url":"https://api.github.com/repos/SpongePowered/Mixin/issues/100/comments","events_url":"https://api.github.com/repos/SpongePowered/Mixin/issues/100/events","html_url":"https://github.com/SpongePowered/Mixin/issues/100","id":129180436,"number":100,"title":"Method overwrite conflict for lambda$null$0","user":{"login":"Minecrell","id":3035868,"avatar_url":"https://avatars.githubusercontent.com/u/3035868?v=3","gravatar_id":"","url":"https://api.github.com/users/Minecrell","html_url":"https://github.com/Minecrell","followers_url":"https://api.github.com/users/Minecrell/followers","following_url":"https://api.github.com/users/Minecrell/following{/other_user}","gists_url":"https://api.github.com/users/Minecrell/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecrell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecrell/subscriptions","organizations_url":"https://api.github.com/users/Minecrell/orgs","repos_url":"https://api.github.com/users/Minecrell/repos","events_url":"https://api.github.com/users/Minecrell/events{/privacy}","received_events_url":"https://api.github.com/users/Minecrell/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-01-27T15:40:27Z","updated_at":"2016-01-28T15:51:16Z","closed_at":null,"body":"_Woo, another issue! However, don't worry: this time it does actually not break anything currently, so feel free to take your time to fix this._\r\n\r\nSo recently, (I think it actually started after I installed the a recent Java update) everytime I start the server from the IDE (or generally a SpongeVanilla JAR built by me), Mixin reports that it has a _\"overwrite conflict\"_ for a lambda method:\r\n\r\n`Method overwrite conflict for lambda$null$0 in mixins.vanilla.json:network.MixinNetHandlerPlayServer, previously written by org.spongepowered.common.mixin.core.network.MixinNetHandlerPlayServer. Skipping method.`\r\n\r\nI think the reason why it doesn't break anything currently, is that the code in the lambda is actually the same for both Mixin classes, even though they're used in different methods: [SpongeCommon mixin](https://github.com/SpongePowered/SpongeCommon/blob/master/src/main/java/org/spongepowered/common/mixin/core/network/MixinNetHandlerPlayServer.java#L356) and [SpongeVanilla mixin](https://github.com/SpongePowered/SpongeVanilla/blob/master/src/main/java/org/spongepowered/server/mixin/network/MixinNetHandlerPlayServer.java#L119).\r\n\r\nI could imagine one of the reasons why the name is `lambda$null` is that it's a lambda in a lambda, although the names seem to generally differ between Java compiler versions because a) I'm pretty sure this wasn't always the case (and I haven't touched any of the mixins for a while), and b) the compiled versions produced by our Jenkins don't have this problem.\r\n\r\nFrom what I've read the Java compiler does generally only choose unique names (which fails because these are 2 separate Mixin classes), [meaningful names are not guaranteed](http://mail.openjdk.java.net/pipermail/lambda-dev/2014-October/012126.html). Therefore it might make sense to somehow remap the method names in case of conflict, or just generally remap _all lambda names_ to prevent problems arising from this if the lambdas would actually have 2 different method bodies but the same name.\r\n\r\nFor reference, here is my Java version (basically it's the latest OpenJDK 8 version currently iirc):\r\n\r\n```\r\nopenjdk version \"1.8.0_72\"\r\nOpenJDK Runtime Environment (build 1.8.0_72-b15)\r\nOpenJDK 64-Bit Server VM (build 25.72-b15, mixed mode)\r\n```"},"comment":{"url":"https://api.github.com/repos/SpongePowered/Mixin/issues/comments/176244490","html_url":"https://github.com/SpongePowered/Mixin/issues/100#issuecomment-176244490","issue_url":"https://api.github.com/repos/SpongePowered/Mixin/issues/100","id":176244490,"user":{"login":"Mumfrey","id":1147071,"avatar_url":"https://avatars.githubusercontent.com/u/1147071?v=3","gravatar_id":"","url":"https://api.github.com/users/Mumfrey","html_url":"https://github.com/Mumfrey","followers_url":"https://api.github.com/users/Mumfrey/followers","following_url":"https://api.github.com/users/Mumfrey/following{/other_user}","gists_url":"https://api.github.com/users/Mumfrey/gists{/gist_id}","starred_url":"https://api.github.com/users/Mumfrey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mumfrey/subscriptions","organizations_url":"https://api.github.com/users/Mumfrey/orgs","repos_url":"https://api.github.com/users/Mumfrey/repos","events_url":"https://api.github.com/users/Mumfrey/events{/privacy}","received_events_url":"https://api.github.com/users/Mumfrey/received_events","type":"User","site_admin":false},"created_at":"2016-01-28T15:51:16Z","updated_at":"2016-01-28T15:51:16Z","body":"All I need to know is whether these methods are decorated with a synthetic marker."}}