@@ -0,0 +1,1609 @@
+package com.techern.minecraft.permissions.util;%0A%0Aimport java.lang.reflect.Field;%0A%0A/**%0A * A class used to help with Java's reflection abilities%0A *%0A * @since 0.0.1%0A */%0Apublic class ReflectionUtilities %7B%0A%0A    /**%0A     * Gets a %7B@link Field%7D in a %7B@link Class%7D's hierarchy%0A     *%0A     * @param classBeingSearched The %7B@link Class%7D being searched%0A     * @param deobfuscatedFieldName The %7B@link Field%7D's name when in a deobfuscated / development environment%0A     * @param obfuscatedFieldName The %7B@link Field%7D's name when in an obfuscated environment%0A     * @return A %7B@link Field%7D if successful%0A     *%0A     * @throws NoSuchFieldException If not field in the hierarchy%0A     * @since 0.0.1%0A     */%0A    public static Field getFieldInHierarchy(Class%3C?%3E classBeingSearched, String deobfuscatedFieldName, String obfuscatedFieldName) throws NoSuchFieldException %7B%0A        try %7B%0A            try %7B%0A                return classBeingSearched.getDeclaredField(deobfuscatedFieldName);%0A            %7D catch (NoSuchFieldException exception) %7B%0A                return classBeingSearched.getDeclaredField(obfuscatedFieldName);%0A            %7D%0A        %7D catch (NoSuchFieldException exception) %7B%0A            Class%3C?%3E superClass = classBeingSearched.getSuperclass();%0A%0A            //Check to see if it exists%0A            if (superClass != null) %7B%0A                return getFieldInHierarchy(superClass, deobfuscatedFieldName, obfuscatedFieldName);%0A            %7D else %7B%0A                throw new NoSuchFieldException(%22Not even in hierarchy: %5C%22%22 + deobfuscatedFieldName + %22 %7C %22 + obfuscatedFieldName + %22%5C%22%22);%0A            %7D%0A        %7D%0A    %7D%0A%0A%7D%0A

Bring ReflectionUtilities over from Pathomania