gt:         if (!valueMap.containsKey(key)) {
context: /*
   * Project: ImpishExploration
   * Module: Placeholder_Game-Core_main
   * File: SavableTag.java
   *
   * Created by Tim on 11/06/17 13:54 on behalf of SmithsGaming
   * Copyright (c) 2017. All rights reserved.
   *
   * Last modified 11/06/17 13:48
   */
  
  package com.scoutgamestudio.placeholder.common.util.data;
  
  import com.google.gson.*;
  import com.google.gson.reflect.TypeToken;
  import com.scoutgamestudio.placeholder.common.util.exception.SavableTagException;
  
  import java.io.Serializable;
  import java.lang.reflect.Type;
  import java.util.HashMap;
  
  /**
   * Created by Tim on 20/08/2016.
   */
  public class SavableTag implements Serializable {
  
      static final Type SAVABLETYPE = new TypeToken<SavableTag>() {
      }.getType();
      private static final Gson GSONSAVABLE = new GsonBuilder().registerTypeAdapter(SAVABLETYPE, SavableTagJSONHandler.instance).create();
  
      /**
       * The final thing to be saved to disk
       */
      private HashMap<String, String> valueMap;
  
      public SavableTag() {
          valueMap = new HashMap<>();
      }
  
      public static SavableTag deserializeFromJson(String jsonString) {
          return GSONSAVABLE.fromJson(jsonString, SAVABLETYPE);
      }
  
      public static SavableTag deserializeFromJson(JsonElement jsonElement) {
          return GSONSAVABLE.fromJson(jsonElement, SAVABLETYPE);
      }
  
      public static SavableTag deserializeFromJson(JsonObject jsonObject) {
          return GSONSAVABLE.fromJson(jsonObject, SAVABLETYPE);
      }
  
      /**
       * Save an integer value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeInt(String key, int data) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, String.valueOf(data));
      }
  
      /**
       * Save a double value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeDouble(String key, double data) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, String.valueOf(data));
      }
  
      /**
       * Save a float value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeFloat(String key, float data) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, String.valueOf(data));
      }
  
      /**
       * Save a long value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeLong(String key, long data) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, String.valueOf(data));
      }
  
      /**
       * Save a String value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeString(String key, String data) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, data);
      }
  
      /**
       * Save a boolean value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void writeBoolean(String key, boolean data) {
          writeInt(key, data ? 1 : 0);
      }
  
      /**
       * Write a SavableTag to the disk with the given key
       *
       * @param key Unique key for the value
       * @param tag The SavableTag to save
       */
      public void writeSavableTag(String key, SavableTag tag) {
          if (valueMap.containsKey(key)) {
              throw new SavableTagException("The key: " + key + " already exists in the SavableTag");
          }
          valueMap.put(key, tag.serializeToString());
      }
  
      /**
       * Save an integer value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void updateInt(String key, int data) {
          if (!valueMap.containsKey(key)) {
              writeInt(key, data);
          } else {
              valueMap.put(key, String.valueOf(data));
          }
      }
  
      /**
       * Save a double value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void updateDouble(String key, double data) {
          if (!valueMap.containsKey(key)) {
              writeDouble(key, data);
          } else {
              valueMap.put(key, String.valueOf(data));
          }
      }
  
      /**
       * Save a float value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void updateFloat(String key, float data) {
          if (!valueMap.containsKey(key)) {
              writeFloat(key, data);
          } else {
              valueMap.put(key, String.valueOf(data));
          }
      }
  
      /**
       * Save a long value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void updateLong(String key, long data) {
          if (!valueMap.containsKey(key)) {
              writeLong(key, data);
          } else {
              valueMap.put(key, String.valueOf(data));
          }
      }
  
      /**
       * Save a String value to disk with the given key
       *
       * @param key  Unique key for the value
       * @param data The value to save
       */
      public void updateString(String key, String data) {
  