public static <D extends DeclaredStatement<?>> StmtContext<?, ?, ?> findFirstDeclaredSubstatementOnSublevel( final StmtContext<?, ?, ?> stmtContext, final Class<D> declaredType, int sublevel) { for (final StmtContext<?, ?, ?> subStmtContext : stmtContext.declaredSubstatements()) { if (sublevel == 1 && producesDeclared(subStmtContext, declaredType)) { return subStmtContext; } if (sublevel > 1) { final StmtContext<?, ?, ?> result = findFirstDeclaredSubstatementOnSublevel(subStmtContext, declaredType, --sublevel); if (result != null) { return result; } } } return null; }