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); }