OperationTemplate
OperationTemplate withDeclaredThrowables(Throwable... throwables); (!=RuntimeException)
List<Class<? extends Throwable>> declaredThrowables();
Problem is though if we start allowing Op to throw Throwables. There are no way to check them.