public Parser selectStatement() {
        if (selectStatementParser == null) {
           FutureParser future = scoped("selectStatement");
           selectStatementParser = future;
           future.setParser(
               sequence(
                   selectClause(),
                   assignClause(),
                   permuted(
                       organizationClause(),
                       collationClause(),
                       recordDelimiterClause(),
                       reserveClause(),
                       accessModeClause(),
                       lockModeClause(),
                       relativeKeyClause(),
                       recordKeyClause(),
                       alternateRecordKeyClause(),
                       fileStatusClause(),
                       sharingClause(),
                       paddingClause()
                   ),
                   token(".")
               )
           );
        }

        return selectStatementParser;
    }