// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// WARNING: Do not edit - generated code.

part of html;

$!COMMENT
abstract class $ID$EXTENDS {
  factory $ID.get(String url, onSuccess($ID request)) =>
      _$(ID)FactoryProvider.create$(ID)_get(url, onSuccess);

  factory $ID.getWithCredentials(String url, onSuccess($ID request)) =>
      _$(ID)FactoryProvider.create$(ID)getWithCredentials(url, onSuccess);
$!MEMBERS}
