public static void processMockContextAnnotation(Object testClass, Field f) {
        MockContext contextAnnotation = f.getAnnotation(MockContext.class);
        if (contextAnnotation != null) {
            if (f.getType().isAssignableFrom(InitialContext.class)) {
                f.setAccessible(true);
                try {
                    InitialContext mockContext = (InitialContext) f.get(testClass);
                    if (mockContext != null) {
                        Daiquiri.Naming.mockInitialContext(mockContext);
                    } else {
                        mockContext = Daiquiri.Naming.mockInitialContext();
                        f.set(testClass, mockContext);
                    }
                } catch (NamingException e) {
                    throw new DaiquiriException(e);
                } catch (IllegalAccessException e) {
                    throw new DaiquiriException(e);
                }
            }
            else if (f.getType().isAssignableFrom(InitialDirContext.class)) {
                f.setAccessible(true);
                try {
                    InitialDirContext mockContext = (InitialDirContext) f.get(testClass);
                    if (mockContext != null) {
                        Daiquiri.Naming.mockInitialDirContext(mockContext);
                    } else {
                        mockContext = Daiquiri.Naming.mockInitialDirContext();
                        f.set(testClass, mockContext);
                    }
                } catch (NamingException e) {
                    throw new DaiquiriException(e);
                } catch (IllegalAccessException e) {
                    throw new DaiquiriException(e);
                }
            }
        }
    }