// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

interface TestIntegerIndexed {
    [Custom] getter boolean (unsigned long index);
    [Custom] setter boolean (unsigned long index, Node value);
    [Custom] deleter boolean (unsigned long index);
    attribute short length;

    [Custom=(PropertyGetter,PropertyEnumerator,PropertyQuery)] getter Node (DOMString name);
    [Custom] setter Node (DOMString name, Node value);
    [Custom] deleter boolean (DOMString name);

    void voidMethodDocument(Document document);
};
