package com.demonwav.mcdev.platform.mixin;

import com.demonwav.mcdev.platform.AbstractModuleType;
import com.demonwav.mcdev.platform.PlatformType;
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations;

import com.google.common.collect.ImmutableList;
import com.intellij.openapi.module.Module;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;
import java.util.List;

public class MixinModuleType extends AbstractModuleType<MixinModule> {

    public static final String ID = "MIXIN_MODULE_TYPE";
    private static final MixinModuleType instance = new MixinModuleType();

    private MixinModuleType() {
        super("org.spongepowered", "mixin");
    }

    @NotNull
    public static MixinModuleType getInstance() {
        return instance;
    }

    @Override
    public PlatformType getPlatformType() {
        return PlatformType.MIXIN;
    }

    @Override
    public Icon getIcon() {
        return null;
    }

    @Override
    public boolean hasIcon() {
        return false;
    }

    @Override
    public String getId() {
        return ID;
    }

    private final ImmutableList<String> annotations = ImmutableList.<String>builder()
            .add(Annotations.DEBUG)
            .add(Annotations.FINAL)
            .add(Annotations.IMPLEMENTS)
            .add(Annotations.INTERFACE)
            .add(Annotations.INTRINSIC)
            .add(Annotations.MIXIN)
            .add(Annotations.MUTABLE)
            .add(Annotations.OVERWRITE)
            .add(Annotations.SHADOW)
            .add(Annotations.SOFT_OVERRIDE)
            .add(Annotations.UNIQUE)
            .add(Annotations.INJECT)
            .add(Annotations.MODIFY_ARG)
            .add(Annotations.MODIFY_CONSTANT)
            .add(Annotations.MODIFY_VARIABLE)
            .add(Annotations.REDIRECT)
            .add(Annotations.SURROGATE)
            .build();

    @NotNull
    @Override
    public List<String> getIgnoredAnnotations() {
        return this.annotations;
    }

    @NotNull
    @Override
    public List<String> getListenerAnnotations() {
        return ImmutableList.of();
    }

    @NotNull
    @Override
    public MixinModule generateModule(Module module) {
        return new MixinModule(module);
    }
}

@@ -617,498 +617,14 @@
 ate 
-MixinModuleType() %7B%0A        super(%22org.spongepowered%22, %22mixin%22);%0A    %7D%0A%0A    @NotNull%0A    public static MixinModuleType getInstance() %7B%0A        return instance;%0A    %7D%0A%0A    @Override%0A    public PlatformType getPlatformType() %7B%0A        return PlatformType.MIXIN;%0A    %7D%0A%0A    @Override%0A    public Icon getIcon() %7B%0A        return null;%0A    %7D%0A%0A    @Override%0A    public boolean hasIcon() %7B%0A        return false;%0A    %7D%0A%0A    @Override%0A    public String getId() %7B%0A        return ID;%0A    %7D%0A%0A    private
+static
  fin
@@ -1387,24 +1387,515 @@
  .build();%0A%0A
+    private MixinModuleType() %7B%0A        super(%22org.spongepowered%22, %22mixin%22);%0A    %7D%0A%0A    @NotNull%0A    public static MixinModuleType getInstance() %7B%0A        return instance;%0A    %7D%0A%0A    @Override%0A    public PlatformType getPlatformType() %7B%0A        return PlatformType.MIXIN;%0A    %7D%0A%0A    @Override%0A    public Icon getIcon() %7B%0A        return null;%0A    %7D%0A%0A    @Override%0A    public boolean hasIcon() %7B%0A        return false;%0A    %7D%0A%0A    @Override%0A    public String getId() %7B%0A        return ID;%0A    %7D%0A%0A
     @NotNull
@@ -1978,13 +1978,8 @@
 urn 
-this.
 anno

Make annotations static (#50)