gt:         if (this.sellPrice > 0 && this.buyLimit > 0)
context: package me.jayfella.blockshop.core;
  
  import java.io.File;
  import java.util.Comparator;
  import me.jayfella.blockshop.PluginContext;
  import org.bukkit.block.Sign;
  import org.bukkit.configuration.file.FileConfiguration;
  import org.bukkit.inventory.ItemStack;
  
  public class Shop implements IShop, Comparable<Shop>
  {
      private final PluginContext context;
  
      private final File file;
      private final ThinLocation signLocation;
      private final ShopType shopType;
      private final ItemStack itemStack;
      private final Product product;
      private final String shopOwner;
  
      private int stockCount;
      private int buyLimit;
      private double buyPrice;
      private double sellPrice;
  
      public Shop(PluginContext context, File file, int stockCount, double buyPrice, double sellPrice, int buyLimit, ShopType shopType, ItemStack itemStack, String shopOwner, ThinLocation signLocation)
      {
          this.context = context;
          this.file = file;
  
          this.stockCount = stockCount;
          this.buyPrice = buyPrice;
          this.sellPrice = sellPrice;
  
          this.buyLimit = buyLimit;
  
          this.shopType = shopType;
  
          this.itemStack = itemStack;
          this.itemStack.setAmount(1);
  
          this.shopOwner = shopOwner;
          this.signLocation = signLocation;
  
          this.product = new Product(itemStack);
      }
  
      @Override public File getFile() { return this.file; }
      @Override public ThinLocation getLocation() { return this.signLocation; }
      @Override public Product getProduct() { return this.product; }
  
      @Override public double getBuyPrice() { return this.buyPrice; }
      @Override public double getSellPrice() { return this.sellPrice; }
  
      @Override public void setBuyPrice(double price)
      {
          this.buyPrice = price;
          this.updateSign();
  
          // saveValue("buyPrice", this.buyPrice);
          saveShopToDisk();
      }
  
      @Override
      public void setSellPrice(double price)
      {
          this.sellPrice = price;
          this.updateSign();
  
          // saveValue("sellPrice", this.sellPrice);
          saveShopToDisk();
      }
  
      @Override
      public void addStock(int amount)
      {
          this.stockCount += amount;
          this.updateSign();
  
          // this.saveValue("stock", this.stockCount);
          saveShopToDisk();
      }
  
      @Override
      public void removeStock(int amount)
      {
          this.stockCount -= amount;
          this.updateSign();
  
          // this.saveValue("stock", this.stockCount);
          saveShopToDisk();
      }
  
      @Override
      public int getStockCount()
      {
          return this.stockCount;
      }
  
      @Override public int getBuyLimit()
      {
          if (this.sellPrice < 0.01)
              return 0;
          else
              return this.buyLimit;
      }
  
      @Override public void setBuyLimit(int limit)
      {
          if (limit > this.getStockSpace())
              this.buyLimit = this.getStockSpace();
          else
              this.buyLimit = limit;
  
          updateSign();
  
          // this.saveValue("buyLimit", this.buyLimit);
          saveShopToDisk();
      }
  
      @Override
      public int getMaxStacks()
      {
          return this.shopType.getMaxStacks();
      }
  
      @Override
      public int getMaxStock()
      {
          return this.getMaxStacks() * this.itemStack.getMaxStackSize();
      }
  
      @Override
      public int getStockSpace()
      {
          return this.getMaxStock() - this.stockCount;
      }
  
      @Override
      public int canStockFit(int amountToAdd)
      {
          int proposedStock = this.stockCount + amountToAdd;
          int itemsReturned;
  
          if (proposedStock > this.getMaxStock())
          {
              int difference = this.getMaxStock() - this.stockCount;
              itemsReturned = amountToAdd - difference;
          }
          else
          {
              itemsReturned = 0;
          }
  
          return itemsReturned;
      }
  
      @Override
      public ItemStack getItemStack()
      {
          return this.itemStack;
      }
  
      @Override
      public ShopType getShopType()
      {
          return this.shopType;
      }
  
      @Override
      public String getOwner()
      {
          return this.shopOwner;
      }
  
      /* private synchronized void saveValue(final String node, final Object value)
      {
          context.getPlugin().getServer().getScheduler().runTaskAsynchronously(context.getPlugin(), new Runnable()
          {
             @Override
             public synchronized void run()
             {
                  ConfigAccessor config = new ConfigAccessor(context.getPlugin(), file);
                  FileConfiguration fileConfig = config.getConfig();
  
                  fileConfig.set(node, value);
                  config.saveConfig();
             }
          });
      }*/
  
      private synchronized void saveShopToDisk()
      {
          context.getPlugin().getServer().getScheduler().runTaskAsynchronously(context.getPlugin(), new Runnable()
          {
              @Override
              public synchronized void run()
              {
                  ConfigAccessor configAccessor = new ConfigAccessor(context.getPlugin(), file);
                  FileConfiguration fileConfig = configAccessor.getConfig();
  
                  fileConfig.set("stock", stockCount);
                  fileConfig.set("buyPrice", buyPrice);
                  fileConfig.set("sellPrice", sellPrice);
                  fileConfig.set("buyLimit", buyLimit);
                  fileConfig.set("type", shopType.name());
                  fileConfig.set("itemStack", itemStack);
                  fileConfig.set("owner", shopOwner);
  
                  fileConfig.set("location.x", signLocation.getX());
                  fileConfig.set("location.y", signLocation.getY());
                  fileConfig.set("location.z", signLocation.getZ());
                  fileConfig.set("location.world", signLocation.getWorld());
  
                  configAccessor.saveConfig();
              }
          });
      }
  
      public Sign getShopSign()
      {
          return (Sign)context
                  .getPlugin()
                  .getServer()
                  .getWorld(this.signLocation.getWorld())
                  .getBlockAt(signLocation.getX(), signLocation.getY(), signLocation.getZ())
                  .getState();
      }
  
      public void updateSign()
      {
          Sign sign = this.getShopSign();
  
          sign.setLine(0, this.product.getMaterial().name().replaceAll("_", " "));
  
          if (this.buyPrice > 0 && this.stockCount > 0)
              sign.setLine(1, ShopHelper.SIGN_BUY + this.buyPrice);
          else
              sign.setLine(1, ShopHelper.SIGN_BUY + ShopHelper.SIGN_NOT_AVAILABLE);
  
  