ArrayList tags = ctx._source.tag = new ArrayList(); if (ctx._source?.mime == "text/x-c") { tags.add("language.c"); if (ctx._source.extension == "h") { tags.add("language.c.header"); } else if (ctx._source.extension == "dts") { tags.add("language.c.device tree source"); } } else if (ctx._source?.mime == "text/x-asm") { tags.add("language.assembly"); if (ctx._source.path.contains("/arm/") || ctx._source.path.contains("/arm64/")) { tags.add("language.assembly.ARM#2459b5"); } else if (ctx._source.path.contains("/powerpc/")) { tags.add("language.assembly.PPC#53d836"); } else if (ctx._source.path.contains("/mips/")) { tags.add("language.assembly.MIPS#c3d639"); } else if (ctx._source.path.contains("/csky/")) { tags.add("language.assembly.csky#c44023"); } else if (ctx._source.path.contains("/sparc/")) { tags.add("language.assembly.sparc#d81cd2"); } else if (ctx._source.path.contains("/x86/")) { tags.add("language.assembly.x86#7e21ef"); } }