src/main/java/mezz/jei/util/StackHelper.java
public boolean isEquivalent(@Nullable ItemStack lhs, @Nullable ItemStack rhs) {
		if (lhs == rhs) {
			return true;
		}

		if (lhs == null || rhs == null) {
			return false;
		}

		if (lhs.getItem() != rhs.getItem()) {
			return false;
		}

		if (lhs.getMetadata() != OreDictionary.WILDCARD_VALUE) {
			if (lhs.getMetadata() != rhs.getMetadata()) {
				return false;
			}
		}

		if (lhs.getHasSubtypes()) {
			String keyLhs = getUniqueIdentifierForStack(lhs, UidMode.NORMAL);
			String keyRhs = getUniqueIdentifierForStack(rhs, UidMode.NORMAL);
			return Java6Helper.equals(keyLhs, keyRhs);
		} else {
			return true;
		}
	}
/**
	 * Similar to ItemStack.areItemStacksEqual but ignores NBT on items without subtypes, and uses the {@link ISubtypeRegistry}
	 */
Similar to ItemStack.areItemStacksEqual but ignores NBT on items without subtypes, and uses the  ISubtypeRegistry
Similar to ItemStack . areItemStacksEqual but ignores NBT on items without subtypes and uses the ISubtypeRegistry
public boolean isEquivalent(@Nullable ItemStack lhs, @Nullable ItemStack rhs) {
		if (lhs == rhs) {
			return true;
		}
		if (lhs == null || rhs == null) {
			return false;
		}
		if (lhs.getItem() != rhs.getItem()) {
			return false;
		}
		if (lhs.getMetadata() != OreDictionary.WILDCARD_VALUE) {
			if (lhs.getMetadata() != rhs.getMetadata()) {
				return false;
			}
		}
		if (lhs.getHasSubtypes()) {
			String keyLhs = getUniqueIdentifierForStack(lhs, UidMode.NORMAL);
			String keyRhs = getUniqueIdentifierForStack(rhs, UidMode.NORMAL);
			return Java6Helper.equals(keyLhs, keyRhs);
		} else {
			return true;
		}
	}
public boolean isEquivalent ( @ Nullable ItemStack lhs , @ Nullable ItemStack rhs ) { if ( lhs == rhs ) { return true ; } if ( lhs == null || rhs == null ) { return false ; } if ( lhs . getItem ( ) != rhs . getItem ( ) ) { return false ; } if ( lhs . getMetadata ( ) != OreDictionary . WILDCARD_VALUE ) { if ( lhs . getMetadata ( ) != rhs . getMetadata ( ) ) { return false ; } } if ( lhs . getHasSubtypes ( ) ) { String keyLhs = getUniqueIdentifierForStack ( lhs , UidMode . NORMAL ) ; String keyRhs = getUniqueIdentifierForStack ( rhs , UidMode . NORMAL ) ; return Java6Helper . equals ( keyLhs , keyRhs ) ; } else { return true ; } }
Similar to ItemStack.areItemStacksEqual but ignores NBT on items without subtypes, and uses the {@link ISubtypeRegistry}
Similar to ItemStack . areItemStacksEqual but ignores NBT on items without subtypes and uses the { @link ISubtypeRegistry }