// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
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);
};