/*
 * Copyright (c) 2015 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.parser.spi.meta;

import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;

public interface StatementFactory<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A, D>> {

    D createDeclared(StmtContext<A,D,?> ctx);

    E createEffective(StmtContext<A,D,E> ctx);

}

@@ -359,16 +359,49 @@
 .meta;%0A%0A
+import javax.annotation.Nonnull;%0A
 import o
@@ -576,16 +576,17 @@
 ctory%3CA,
+ 
 D extend
@@ -608,16 +608,17 @@
 ment%3CA%3E,
+ 
 E extend
@@ -647,20 +647,198 @@
 , D%3E%3E %7B%0A
-%0A
    
+ /**%0A     * Create a %7B@link DeclaredStatement%7D for specified context.%0A     *%0A     * @param ctx Statement context%0A     * @return A declared statement instance.%0A     */%0A    @Nonnull
  D creat
@@ -847,16 +847,25 @@
 eclared(
+@Nonnull 
 StmtCont
@@ -870,18 +870,20 @@
 ntext%3CA,
+ 
 D,
+ 
 ?%3E ctx);
@@ -888,16 +888,198 @@
 );%0A%0A    
+/**%0A     * Create a %7B@link EffectiveStatement%7D for specified context.%0A     *%0A     * @param ctx Statement context%0A     * @return An effective statement instance.%0A     */%0A    @Nonnull 
 E create
@@ -1088,16 +1088,25 @@
 fective(
+@Nonnull 
 StmtCont
@@ -1111,18 +1111,20 @@
 ntext%3CA,
+ 
 D,
+ 
 E%3E ctx);
@@ -1124,11 +1124,10 @@
 %3E ctx);%0A
-%0A
 %7D%0A

Add StatementFactory javadocs