public Parser alternateRecordKeyClause() {
        if (alternateRecordKeyClauseParser == null) {
           FutureParser future = scoped("alternateRecordKeyClause");
           alternateRecordKeyClauseParser = future;
           future.setParser(
               sequence(
                   token("ALTERNATE"),
                   optional(
                       token("RECORD")
                   ),
                   optional(
                       token("KEY")
                   ),
                   optional(
                       token("IS")
                   ),
                   recordKeyDefinition(),
                   permuted(
                       passwordClause(),
                       suppressClause(),
                       sequence(
                           optional(
                               token("WITH")
                           ),
                           token("DUPLICATES")
                       )
                   )
               )
           );
        }

        return alternateRecordKeyClauseParser;
    }