private FieldDeclaration createDeleteFlagValueField(
     EmitContext context, ModelDeclaration model, AstLiteral deleteFlagValue) {
   assert context != null;
   assert model != null;
   assert deleteFlagValue != null;
   ModelFactory f = context.getModelFactory();
   Type type;
   Expression value;
   switch (deleteFlagValue.kind) {
     case BOOLEAN:
       type = context.resolve(boolean.class);
       value = Models.toLiteral(f, deleteFlagValue.toBooleanValue());
       break;
     case INTEGER:
       type = context.resolve(int.class);
       value = Models.toLiteral(f, deleteFlagValue.toIntegerValue().intValue());
       break;
     case STRING:
       type = context.resolve(Text.class);
       value =
           new TypeBuilder(f, context.resolve(Text.class))
               .newObject(Models.toLiteral(f, deleteFlagValue.toStringValue()))
               .toExpression();
       break;
     default:
       throw new AssertionError(deleteFlagValue);
   }
   return f.newFieldDeclaration(
       null,
       new AttributeBuilder(f).Private().Static().Final().toAttributes(),
       type,
       f.newSimpleName(FIELD_DELETE_FLAG_VALUE),
       value);
 }
 private boolean checkNotEmpty(DmdlSemantics environment, String name, AstLiteral stringLiteral) {
   assert environment != null;
   assert name != null;
   assert stringLiteral != null;
   assert stringLiteral.kind == LiteralKind.STRING;
   if (stringLiteral.toStringValue().isEmpty()) {
     environment.report(
         new Diagnostic(
             Level.ERROR, stringLiteral, "@{0}({1}) must not be empty", TARGET_NAME, name));
     return false;
   }
   return true;
 }
  private Configuration analyzeConfig(
      DmdlSemantics environment,
      AstAttribute attribute,
      Map<String, AstAttributeElement> elements) {
    AstLiteral charset = take(environment, elements, ELEMENT_CHARSET_NAME, LiteralKind.STRING);
    AstLiteral header = take(environment, elements, ELEMENT_HAS_HEADER_NAME, LiteralKind.BOOLEAN);
    AstLiteral codec = take(environment, elements, ELEMENT_CODEC_NAME, LiteralKind.STRING);
    environment.reportAll(AttributeUtil.reportInvalidElements(attribute, elements.values()));

    Configuration result = new Configuration();
    if (charset != null && checkNotEmpty(environment, ELEMENT_CHARSET_NAME, charset)) {
      result.setCharsetName(charset.toStringValue());
    }
    if (header != null) {
      result.setEnableHeader(header.toBooleanValue());
    }
    if (codec != null && checkNotEmpty(environment, ELEMENT_CODEC_NAME, codec)) {
      result.setCodecName(codec.toStringValue());
    }
    return result;
  }