private static String getCalculatorClass(ContextCalculator<?> calculator) {
        Class<?> calculatorClass;
        if (calculator instanceof ForwardingContextCalculator) {
            calculatorClass = ((ForwardingContextCalculator<?>) calculator).delegate().getClass();
        } else {
            calculatorClass = calculator.getClass();
        }
        return calculatorClass.getName();
    }
Base implementation of {@link ContextManager}.

@param <S> the subject type
@param <P> the player type
common/src/main/java/me/lucko/luckperms/common/context/manager/ContextManager.java