content: package net.minecraft.client.resources.model;
  
  import net.minecraft.util.ResourceLocation;
  import org.apache.commons.lang3.StringUtils;
  
  public class ModelResourceLocation extends ResourceLocation {
      private final String variant;
  
      protected ModelResourceLocation(int p_i46078_1_, String... p_i46078_2_) {
          super(0, p_i46078_2_[0], p_i46078_2_[1]);
          this.variant = StringUtils.isEmpty(p_i46078_2_[2]) ? "normal" : p_i46078_2_[2].toLowerCase();
      }
  
      public ModelResourceLocation(String p_i46079_1_) {
          this(0, parsePathString(p_i46079_1_));
      }
  
      public ModelResourceLocation(ResourceLocation p_i46080_1_, String p_i46080_2_) {
          this(p_i46080_1_.toString(), p_i46080_2_);
      }
  
      public ModelResourceLocation(String p_i46081_1_, String p_i46081_2_) {
          this(0, parsePathString(p_i46081_1_ + '#' + (p_i46081_2_ == null ? "normal" : p_i46081_2_)));
      }
  
      protected static String[] parsePathString(String p_177517_0_) {
          String[] astring = new String[]{null, p_177517_0_, null};
          int i = p_177517_0_.indexOf(35);
          String s = p_177517_0_;
  
          if (i >= 0) {
              astring[2] = p_177517_0_.substring(i + 1);
  
              if (i > 1) {
                  s = p_177517_0_.substring(0, i);
              }
          }
  
          System.arraycopy(ResourceLocation.splitObjectName(s), 0, astring, 0, 2);
          return astring;
      }
  
      public String getVariant() {
          return this.variant;
      }
  
      public boolean equals(Object p_equals_1_) {
          if (this == p_equals_1_) {
              return true;
          } else if (p_equals_1_ instanceof ModelResourceLocation && super.equals(p_equals_1_)) {
              ModelResourceLocation modelresourcelocation = (ModelResourceLocation) p_equals_1_;
              return this.variant.equals(modelresourcelocation.variant);
          } else {
              return false;
          }
      }
  
      public int hashCode() {
          return 31 * super.hashCode() + this.variant.hashCode();
      }
  
      public String toString() {
          return super.toString() + '#' + this.variant;
      }
  }
  