private static final QualifiedAsterisk parseQualifiedAsteriskIf(ParserContext ctx) { int position = ctx.position(); Name i1 = parseIdentifierIf(ctx); if (i1 == null) return null; if (parseIf(ctx, '.')) { List<Name> result = null; Name i2; do { if ((i2 = parseIdentifierIf(ctx)) != null) { if (result == null) { result = new ArrayList<Name>(); result.add(i1); } result.add(i2); } else { parse(ctx, '*'); return table(result == null ? i1 : DSL.name(result.toArray(EMPTY_NAME))).asterisk(); } } while (parseIf(ctx, '.')); } ctx.position(position); return null; }