public Parser uponClause() {
        if (uponClauseParser == null) {
           FutureParser future = scoped("uponClause");
           uponClauseParser = future;
           future.setParser(
               sequence(
                   token("UPON"),
                   choice(
                       token("ARGUMENT-NUMBER"),
                       token("COMMAND-LINE"),
                       token("ENVIRONMENT-VALUE"),
                       token("ENVIRONMENT-NAME"),
                       environmentName(),
                       mnemonicName()
                   )
               )
           );
        }

        return uponClauseParser;
    }