### Question:
InvocationManagerImpl implements InvocationManager { @Override public void popAppEnvironment() { appEnvironments.get().pollLast(); } InvocationManagerImpl();  InvocationManagerImpl(ComponentInvocationHandler... handlers); @Inject private  InvocationManagerImpl(@Optional IterableProvider<ComponentInvocationHandler> handlers); private  InvocationManagerImpl(Iterable<ComponentInvocationHandler> handlers); @Override void setThreadInheritableInvocation(List<? extends ComponentInvocation> parentValue); @Override void preInvoke(T invocation); @Override void postInvoke(T invocation); @Override boolean isInvocationStackEmpty(); @Override @SuppressWarnings("unchecked") T getCurrentInvocation(); @Override @SuppressWarnings("unchecked") T getPreviousInvocation(); @Override List<? extends ComponentInvocation> getAllInvocations(); @Override List<? extends ComponentInvocation> popAllInvocations(); @Override void putAllInvocations(List<? extends ComponentInvocation> invocations); @Override void registerComponentInvocationHandler(ComponentInvocationType type, RegisteredComponentInvocationHandler handler); @Override void pushAppEnvironment(ApplicationEnvironment env); @Override ApplicationEnvironment peekAppEnvironment(); @Override void popAppEnvironment(); @Override void pushWebServiceMethod(Method method); @Override Method peekWebServiceMethod(); @Override void popWebServiceMethod();  }### Answer:
@Test public void popEmptyAppEnvironmentDoesNotCauseError() { InvocationManager manager = new InvocationManagerImpl(); manager.popAppEnvironment(); }