public Parser recordKeyDefinition() {
        if (recordKeyDefinitionParser == null) {
           FutureParser future = scoped("recordKeyDefinition");
           recordKeyDefinitionParser = future;
           future.setParser(
               choice(
                   sequence(
                       choice(
                           literal(),
                           identifier()
                       ),
                       choice(
                           token("="),
                           sequence(
                               token("SOURCE"),
                               optional(
                                   token("IS")
                               )
                           )
                       ),
                       plus(
                           dataName()
                       )
                   ),
                   dataName()
               )
           );
        }

        return recordKeyDefinitionParser;
    }