gt:             if (cache == null) {
context: package fr.guiguilechat.jcelechat.model.sde.types.module;
  
  import java.io.InputStreamReader;
  import java.util.Collections;
  import java.util.LinkedHashMap;
  import java.util.Map;
  import fr.guiguilechat.jcelechat.model.sde.Attribute;
  import fr.guiguilechat.jcelechat.model.sde.IMetaCategory;
  import fr.guiguilechat.jcelechat.model.sde.IMetaGroup;
  import fr.guiguilechat.jcelechat.model.sde.annotations.DefaultDoubleValue;
  import fr.guiguilechat.jcelechat.model.sde.annotations.DefaultIntValue;
  import fr.guiguilechat.jcelechat.model.sde.annotations.HighIsGood;
  import fr.guiguilechat.jcelechat.model.sde.annotations.Stackable;
  import fr.guiguilechat.jcelechat.model.sde.types.Module;
  import org.yaml.snakeyaml.Yaml;
  
  public class RigScanning
      extends Module
  {
      /**
       * 
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int AccessDifficultyBonusModifier;
      /**
       * Autogenerated skill attribute, capNeedBonus
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int CapNeedBonus;
      /**
       * Skill bonus for cloaking targeting delay.
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int CloakingTargetingDelayBonus;
      /**
       * used on rigs
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(10)
      public int Drawback;
      /**
       * Bonus to duration.
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int DurationBonus;
      /**
       * Bonus to Max Targeting Range
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultDoubleValue(0.0)
      public double MaxTargetRangeBonus;
      /**
       * Authoring has been moved to FSD
       * The ranking of the module within its tech level
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int MetaLevel;
      /**
       * Autogenerated skill attribute, rangeSkillBonus
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int RangeSkillBonus;
      /**
       * 
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int RigSize;
      /**
       * Bonus for scan resolution
       */
      @HighIsGood(true)
      @Stackable(false)
      @DefaultDoubleValue(0.0)
      public double ScanResolutionBonus;
      /**
       * Skill attribute for increasing strength of EW modules.
       */
      @HighIsGood(true)
      @Stackable(false)
      @DefaultDoubleValue(0.0)
      public double ScanSkillEwStrengthBonus;
      /**
       * 
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int ScanStrengthBonus;
      /**
       * Autogenerated skill attribute, scanspeedBonus
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int ScanspeedBonus;
      /**
       * Authoring has been moved to FSD
       * Tech level of an item
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(1)
      public int TechLevel;
      /**
       * How much of the upgrade capacity is used when this is fitted to a ship.
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int UpgradeCost;
      /**
       * Adds to the virus coherence of profession modules
       */
      @HighIsGood(true)
      @Stackable(true)
      @DefaultIntValue(0)
      public int VirusCoherenceBonus;
      public static final RigScanning.MetaGroup METAGROUP = new RigScanning.MetaGroup();
  
      @Override
      public Number attribute(Attribute attribute) {
          switch (attribute.getId()) {
              case  1160 :
              {
                  return AccessDifficultyBonusModifier;
              }
              case  317 :
              {
                  return CapNeedBonus;
              }
              case  619 :
              {
                  return CloakingTargetingDelayBonus;
              }
              case  1138 :
              {
                  return Drawback;
              }
              case  66 :
              {
                  return DurationBonus;
              }
              case  309 :
              {
                  return MaxTargetRangeBonus;
              }
              case  633 :
              {
                  return MetaLevel;
              }
              case  294 :
              {
                  return RangeSkillBonus;
              }
              case  1547 :
              {
                  return RigSize;
              }
              case  566 :
              {
                  return ScanResolutionBonus;
              }
              case  828 :
              {
                  return ScanSkillEwStrengthBonus;
              }
              case  846 :
              {
                  return ScanStrengthBonus;
              }
              case  308 :
              {
                  return ScanspeedBonus;
              }
              case  422 :
              {
                  return TechLevel;
              }
              case  1153 :
              {
                  return UpgradeCost;
              }
              case  1915 :
              {
                  return VirusCoherenceBonus;
              }
              default:
              {
                  return super.attribute((attribute));
              }
          }
      }
  
      @Override
      public IMetaGroup<RigScanning> getGroup() {
          return METAGROUP;
      }
  
      public static class MetaGroup
          implements IMetaGroup<RigScanning>
      {
          public static final String RESOURCE_PATH = "SDE/types/module/RigScanning.yaml";
          private Map<String, RigScanning> cache = (null);
  
          @Override
          public IMetaCategory<? super RigScanning> category() {
              return Module.METACAT;
          }
  
          @Override
          public int getGroupId() {
              return  1233;
          }
  
          @Override
          public String getName() {
              return "RigScanning";
          }
  
          @Override
          public synchronized Map<String, RigScanning> load() {
  