// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
interface OrderedMap {
  readonly attribute unsigned long size;

  getter any getByIndex(unsigned long index);
  setter void setByIndex(unsigned long index, any value);
  deleter void removeByIndex(unsigned long index);

  getter any get(DOMString name);
  setter creator void set(DOMString name, any value);
  deleter void remove(DOMString name);
};