/*
 * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */
package org.opendaylight.yangtools.yang.model.api;

import java.util.List;

/**
 * Interface describing YANG 'deviation' statement.
 *
 * <p>
 * The 'deviation' statement defines a hierarchy of a module that the device
 * does not implement faithfully. Deviations define the way a device deviate
 * from a standard.
 */
public interface Deviation {

    /**
     * Returns target schema path.
     *
     * @return SchemaPath that identifies the node in the schema tree where a
     *         deviation from the module occurs.
     */
    SchemaPath getTargetPath();

    /**
     * Returns deviate children.
     *
     * @return List of all deviate statements defined in this deviation
     */
    List<DeviateDefinition> getDeviates();

    /**
     * Returns the description text.
     *
     * @return textual description of this deviation
     */
    String getDescription();

    /**
     * Returns reference.
     *
     * @return textual cross-reference to an external document that provides
     *         additional information relevant to this node.
     */
    String getReference();

    /**
     * Returns unknown schema node children.
     *
     * @return collection of all unknown nodes defined under this schema node.
     */
    List<UnknownSchemaNode> getUnknownSchemaNodes();

}

@@ -519,19 +519,16 @@
 e device
-%0A *
  does no
@@ -561,16 +561,19 @@
 viations
+%0A *
  define 
@@ -596,19 +596,16 @@
  deviate
-%0A *
  from a 
@@ -645,16 +645,39 @@
 viation 
+extends DocumentedNode 
 %7B%0A%0A    /
@@ -798,31 +798,16 @@
  where a
-%0A     *        
  deviati
@@ -985,32 +985,33 @@
 n this deviation
+.
 %0A     */%0A    Lis
@@ -1050,566 +1050,6 @@
 ();%0A
-%0A    /**%0A     * Returns the description text.%0A     *%0A     * @return textual description of this deviation%0A     */%0A    String getDescription();%0A%0A    /**%0A     * Returns reference.%0A     *%0A     * @return textual cross-reference to an external document that provides%0A     *         additional information relevant to this node.%0A     */%0A    String getReference();%0A%0A    /**%0A     * Returns unknown schema node children.%0A     *%0A     * @return collection of all unknown nodes defined under this schema node.%0A     */%0A    List%3CUnknownSchemaNode%3E getUnknownSchemaNodes();%0A%0A
 %7D%0A

Make Deviation extend DocumentedNode