<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Definitions SYSTEM "widlprocxml.dtd">
<Definitions>
  <webidl>interface Dictionary {
  readonly attribute unsigned long propertyCount;

  getter float getProperty(DOMString propertyName);
  setter void setProperty(DOMString propertyName, float propertyValue);
};


interface Dictionary {
  readonly attribute unsigned long propertyCount;

  float getProperty(DOMString propertyName);
  void setProperty(DOMString propertyName, float propertyValue);

  getter float (DOMString propertyName);
  setter void (DOMString propertyName, float propertyValue);
};</webidl>
  <Interface name="Dictionary" id="::Dictionary">
    <webidl>interface Dictionary {
  readonly attribute unsigned long propertyCount;

  getter float getProperty(DOMString propertyName);
  setter void setProperty(DOMString propertyName, float propertyValue);
};</webidl>
    <Attribute readonly="readonly" name="propertyCount" id="::Dictionary::propertyCount">
      <webidl>  readonly attribute unsigned long propertyCount;</webidl>
      <Type type="unsigned long"/>
    </Attribute>
    <Operation getter="getter" name="getProperty" id="::Dictionary::getProperty">
      <webidl>  getter float getProperty(DOMString propertyName);</webidl>
      <Type type="float"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
      </ArgumentList>
    </Operation>
    <Operation setter="setter" name="setProperty" id="::Dictionary::setProperty">
      <webidl>  setter void setProperty(DOMString propertyName, float propertyValue);</webidl>
      <Type type="void"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
        <Argument name="propertyValue">
          <Type type="float"/>
        </Argument>
      </ArgumentList>
    </Operation>
  </Interface>
  <Interface name="Dictionary" id="::Dictionary">
    <webidl>interface Dictionary {
  readonly attribute unsigned long propertyCount;

  float getProperty(DOMString propertyName);
  void setProperty(DOMString propertyName, float propertyValue);

  getter float (DOMString propertyName);
  setter void (DOMString propertyName, float propertyValue);
};</webidl>
    <Attribute readonly="readonly" name="propertyCount" id="::Dictionary::propertyCount">
      <webidl>  readonly attribute unsigned long propertyCount;</webidl>
      <Type type="unsigned long"/>
    </Attribute>
    <Operation name="getProperty" id="::Dictionary::getProperty">
      <webidl>  float getProperty(DOMString propertyName);</webidl>
      <Type type="float"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
      </ArgumentList>
    </Operation>
    <Operation name="setProperty" id="::Dictionary::setProperty">
      <webidl>  void setProperty(DOMString propertyName, float propertyValue);</webidl>
      <Type type="void"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
        <Argument name="propertyValue">
          <Type type="float"/>
        </Argument>
      </ArgumentList>
    </Operation>
    <Operation getter="getter">
      <webidl>  getter float (DOMString propertyName);</webidl>
      <Type type="float"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
      </ArgumentList>
    </Operation>
    <Operation setter="setter">
      <webidl>  setter void (DOMString propertyName, float propertyValue);</webidl>
      <Type type="void"/>
      <ArgumentList>
        <Argument name="propertyName">
          <Type type="DOMString"/>
        </Argument>
        <Argument name="propertyValue">
          <Type type="float"/>
        </Argument>
      </ArgumentList>
    </Operation>
  </Interface>
</Definitions>
