public Parser primaryCondDef() {
        if (primaryCondDefParser == null) {
           FutureParser future = scoped("primaryCondDef");
           primaryCondDefParser = future;
           future.setParser(
               choice(
                   bit(),
                   sequence(
                       classPrimaryCondition(),
                       star(
                           sequence(
                               conditionalRelationOP(),
                               optional(
                                   negationOp()
                               ),
                               classSecondaryCondition()
                           )
                       )
                   ),
                   signPrimaryCondition(),
                   sequence(
                       generalPrimaryCondition(),
                       star(
                           sequence(
                               conditionalRelationOP(),
                               optional(
                                   negationOp()
                               ),
                               generalSecondaryCondition(),
                               not(
                                   choice(
                                       generalRelationOp(),
                                       token("IS"),
                                       sequence(
                                           optional(
                                               token("NOT")
                                           ),
                                           classType()
                                       ),
                                       signType()
                                   )
                               )
                           )
                       )
                   ),
                   sequence(
                       monoElemPrimaryCondition(),
                       star(
                           sequence(
                               optional(
                                   token("IS")
                               ),
                               optional(
                                   negationOp()
                               ),
                               monoElemPrimaryCondition()
                           )
                       )
                   )
               )
           );
        }

        return primaryCondDefParser;
    }