docs: private List<SemanticError> check(DataType dataType, Constructor constructor, Arg arg) {
          logger.finest("Checking semantic constraints on data type " + dataType.name + ", constructor " + constructor.name);
          final List<SemanticError> errors = new ArrayList<SemanticError>();
          final Set<ArgModifier> modifiers = new HashSet<ArgModifier>();
          for (ArgModifier modifier : arg.modifiers) {
              if (modifiers.contains(modifier)) {
                  final String modName = ASTPrinter.print(modifier);
                  errors.add(_DuplicateModifier(dataType.name, constructor.name, arg.name, modName));
              } else {
                  modifiers.add(modifier);
              }
          }
          
          return errors;
      }