Source (C):
typedef enum {red, yellow,green}
light;
int old_light;
void f() { old_light=(int) swap(green); }
light swap(light new_light){ 
     static light l=red;
     light tmp; 
     tmp=l;
     l=new_light; 
     return tmp;
}
<?xml
version="1.0" encoding="UTF-8"?>
<kdm:Segment xmi:version="2.1" 
xmlns:xmi="http://www.omg.org/XMI"
xmlns:action="http://kdm.omg.org/action"
xmlns:code="http://kdm.omg.org/code"
xmlns:kdm="http://kdm.omg.org/kdm"
xmlns:source="http://kdm.omg.org/source"
name="Enumerations
Example">
  <model xmi:id="id.0" xmi:type="code:CodeModel" name="Variables">
    <codeElement
xmi:id="id.1" xmi:type="code:CompilationUnit">
      <codeElement
xmi:id="id.2" xmi:type="code:TypeUnit"
name="light" type="id.6">
        <source xmi:id="id.3" language="C"
snippet="typedef enum
{red, yellow, green} light;">
          <region xmi:id="id.4" startLine="1"
startPosition="1" endLine="40"
endPosition="1" language="C"
path="Examples/Light.c">
            <annotation xmi:id="id.5"
text="This element illustrates SourceRegion that
does not reference the InventoryModel"/>
          </region>
        </source>
        <codeElement
xmi:id="id.6" xmi:type="code:EnumeratedType"
name="light">
          <value xmi:id="id.7" name="red"
type="id.6"/>
          <value xmi:id="id.8" name="yellow"
type="id.6"/>
          <value xmi:id="id.9" name="green"
type="id.6"/>
        </codeElement>
      </codeElement>
      <codeElement
xmi:id="id.10" xmi:type="code:CallableUnit"
name="f" type="id.14" kind="regular">
        <source xmi:id="id.11" language="C"
snippet="void f()">
          <annotation xmi:id="id.12"
text="This element illustrates a SourceRef
without a SourceRegion"/>
        </source>
        <entryFlow
xmi:id="id.13"
to="id.15"/>
        <codeElement
xmi:id="id.14" xmi:type="code:Signature"
name="f"/>
        <codeElement
xmi:id="id.15" xmi:type="action:ActionElement"
name="a0" kind="Compound">
          <source xmi:id="id.16" language=""
snippet="">
            <annotation xmi:id="id.17"
text="This element illustrates an empty SourceRef
with a SourceRegion that references InventoryModel"/>
            <region xmi:id="id.18"
file="id.69" startLine="3" startPosition="10" endLine="3"
endPosition="42" language="C"
path=""/>
          </source>
          <codeElement xmi:id="id.19" xmi:type="action:ActionElement"
name="a1" kind="Call">
            <actionRelation
xmi:id="id.20" xmi:type="action:Reads"
to="id.9" from="id.19"/>
            <actionRelation
xmi:id="id.21" xmi:type="action:Calls"
to="id.30" from="id.19"/>
            <actionRelation
xmi:id="id.22" xmi:type="action:Writes"
to="id.28" from="id.19"/>
            <actionRelation
xmi:id="id.23" xmi:type="action:Flow"
to="id.24" from="id.19"/>
          </codeElement>
          <codeElement
xmi:id="id.24" xmi:type="action:ActionElement"
name="a2" kind="TypeCast">
            <actionRelation
xmi:id="id.25" xmi:type="action:Reads"
to="id.28" from="id.24"/>
            <actionRelation
xmi:id="id.26" xmi:type="action:UsesType"
to="id.67" from="id.19"/>
            <actionRelation
xmi:id="id.27" xmi:type="action:Writes"
to="id.63" from="id.24"/>
          </codeElement>
          <codeElement
xmi:id="id.28" xmi:type="code:StorableUnit"
name="r1" type="id.2" kind="register"/>
          <actionRelation
xmi:id="id.29" xmi:type="action:Flow"
to="id.19" from="id.15"/>
        </codeElement>
      </codeElement>
      <codeElement
xmi:id="id.30" xmi:type="code:CallableUnit"
name="swap">
        <source xmi:id="id.31" >
          <annotation xmi:id="id.32" text="This
element illustrates a SourceRegion for the complete
procedure"/>
          <region xmi:id="id.33" file="id.69" startLine="1" startPosition="1"
endLine="1" endPosition="1"
language="C" path=""/>
        </source>
        <entryFlow
xmi:id="id.34"
to="id.44" from="id.30"/>
        <codeElement
xmi:id="id.35" xmi:type="code:Signature"
name="swap">
          <source xmi:id="id.36" language="C"
snippet="light swap(light new_light)"/>
          <parameterUnit
xmi:id="id.37"
name="swap" type="id.2" kind="return"
pos="0"/>
          <parameterUnit
xmi:id="id.38"
name="new_light" type="id.2"
pos="1"/>
        </codeElement>
        <codeElement
xmi:id="id.39" xmi:type="code:StorableUnit"
name="l" type="id.2" ext=""
kind="static">
          <source xmi:id="id.40" language="C"
snippet="static light l=red;"/>
          <codeRelation
xmi:id="id.41" xmi:type="code:HasValue"
to="id.7" from="id.39"/>
        </codeElement>
        <codeElement
xmi:id="id.42" xmi:type="code:StorableUnit"
name="tmp" type="id.2"
kind="local">
          <source xmi:id="id.43" language="C"
snippet="light tmp; "/>
        </codeElement>
        <codeElement
xmi:id="id.44" xmi:type="action:ActionElement"
name="init" kind="Assign">
          <actionRelation
xmi:id="id.45" xmi:type="action:Reads"
to="id.7" from="id.44"/>
          <actionRelation
xmi:id="id.46" xmi:type="action:Writes"
to="id.39"/>
          <actionRelation
xmi:id="id.47" xmi:type="action:Flow"
to="id.48" from="id.44"/>
        </codeElement>
        <codeElement
xmi:id="id.48" xmi:type="action:ActionElement"
name="a3" kind="Assign">
          <source xmi:id="id.49" language="C"
snippet="tmp=l;">
            <region xmi:id="id.50"
file="id.69" startLine="7" startPosition="5" endLine="7"
endPosition="11"/>
          </source>
          <actionRelation
xmi:id="id.51" xmi:type="action:Reads"
to="id.39" from="id.48"/>
          <actionRelation
xmi:id="id.52" xmi:type="action:Writes"
to="id.42" from="id.48"/>
          <actionRelation
xmi:id="id.53" xmi:type="action:Flow"
to="id.54" from="id.48"/>
        </codeElement>
        <codeElement
xmi:id="id.54" xmi:type="action:ActionElement"
name="a4" kind="Assign">
          <source xmi:id="id.55" language="C"
snippet="l=new_light"/>
          <actionRelation
xmi:id="id.56" xmi:type="action:Reads"
to="id.38" from="id.54"/>
          <actionRelation
xmi:id="id.57" xmi:type="action:Writes"
to="id.39" from="id.54"/>
          <actionRelation
xmi:id="id.58" xmi:type="action:Flow"
to="id.59" from="id.54"/>
        </codeElement>
        <codeElement
xmi:id="id.59" xmi:type="action:ActionElement"
name="a5" kind="Assign">
          <source xmi:id="id.60" language="C"
snippet="return tmp;"/>
          <actionRelation
xmi:id="id.61" xmi:type="action:Reads"
to="id.42" from="id.59"/>
          <actionRelation
xmi:id="id.62" xmi:type="action:Writes"
to="id.37" from="id.59"/>
        </codeElement>
      </codeElement>
    </codeElement>
    <codeElement
xmi:id="id.63" xmi:type="code:StorableUnit"
name="old_light" type="id.67">
      <source xmi:id="id.64" language="C"
snippet="int old_light;"/>
    </codeElement>
  </model>
  <model xmi:id="id.65" xmi:type="code:CodeModel" name="C common
definitions">
    <codeElement
xmi:id="id.66" xmi:type="code:LanguageUnit">
      <codeElement
xmi:id="id.67" xmi:type="code:IntegerType"
name="int"/>
    </codeElement>
  </model>
  <model xmi:id="id.68"
xmi:type="source:InventoryModel">
    <inventoryElement
xmi:id="id.69" xmi:type="source:SourceFile"
name="light.c" encoding="UTF-8"/>
  </model>
</kdm:Segment>