Populate data/ hierarchy
[yangtools.git] / yang / yang-model-ri / src / main / java / org / opendaylight / yangtools / yang / model / ri / stmt / DeclaredStatementDecorators.java
1 /*
2  * Copyright (c) 2021 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.model.ri.stmt;
9
10 import com.google.common.annotations.Beta;
11 import org.eclipse.jdt.annotation.NonNullByDefault;
12 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
13 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
14 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
15 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
16 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
17 import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement;
18 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
19 import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement;
20 import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
21 import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
22 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
23 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
24 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
25 import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement;
26 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
27 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
28 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
29 import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
30 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
31 import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
32 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement;
33 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
34 import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
35 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
36 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
37 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
38 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
39 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
40 import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
41 import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
42 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
43 import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
44 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
45 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
46 import org.opendaylight.yangtools.yang.model.api.stmt.LengthStatement;
47 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
48 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
49 import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
50 import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
51 import org.opendaylight.yangtools.yang.model.api.stmt.ModifierStatement;
52 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
53 import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
54 import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement;
55 import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
56 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
57 import org.opendaylight.yangtools.yang.model.api.stmt.OrganizationStatement;
58 import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
59 import org.opendaylight.yangtools.yang.model.api.stmt.PathStatement;
60 import org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement;
61 import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement;
62 import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
63 import org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement;
64 import org.opendaylight.yangtools.yang.model.api.stmt.RangeStatement;
65 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
66 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
67 import org.opendaylight.yangtools.yang.model.api.stmt.RequireInstanceStatement;
68 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
69 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
70 import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement;
71 import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
72 import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
73 import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
74 import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
75 import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
76 import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement;
77 import org.opendaylight.yangtools.yang.model.api.stmt.UnrecognizedStatement;
78 import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
79 import org.opendaylight.yangtools.yang.model.api.stmt.ValueStatement;
80 import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
81 import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
82 import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
83 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefActionStatement;
84 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefAnydataStatement;
85 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefAnyxmlStatement;
86 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefArgumentStatement;
87 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefAugmentStatement;
88 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefBaseStatement;
89 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefBelongsToStatement;
90 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefBitStatement;
91 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefCaseStatement;
92 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefChoiceStatement;
93 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefConfigStatement;
94 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefContactStatement;
95 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefContainerStatement;
96 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefDefaultStatement;
97 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefDescriptionStatement;
98 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefDeviateStatement;
99 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefDeviationStatement;
100 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefEnumStatement;
101 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefErrorAppTagStatement;
102 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefErrorMessageStatement;
103 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefExtensionStatement;
104 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefFeatureStatement;
105 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefFractionDigitsStatement;
106 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefGroupingStatement;
107 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefIdentityStatement;
108 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefIfFeatureStatement;
109 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefImportStatement;
110 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefIncludeStatement;
111 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefInputStatement;
112 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefKeyStatement;
113 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefLeafListStatement;
114 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefLeafStatement;
115 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefLengthStatement;
116 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefListStatement;
117 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefMandatoryStatement;
118 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefMaxElementsStatement;
119 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefMinElementsStatement;
120 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefModifierStatement;
121 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefModuleStatement;
122 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefMustStatement;
123 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefNamespaceStatement;
124 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefNotificationStatement;
125 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefOrderedByStatement;
126 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefOrganizationStatement;
127 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefOutputStatement;
128 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefPathStatement;
129 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefPatternStatement;
130 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefPositionStatement;
131 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefPrefixStatement;
132 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefPresenceStatement;
133 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRangeStatement;
134 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefReferenceStatement;
135 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRefineStatement;
136 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRequireInstanceStatement;
137 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRevisionDateStatement;
138 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRevisionStatement;
139 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefRpcStatement;
140 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefStatusStatement;
141 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefSubmoduleStatement;
142 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefTypeStatement;
143 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefTypedefStatement;
144 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefUniqueStatement;
145 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefUnitsStatement;
146 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefUnrecognizedStatement;
147 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefUsesStatement;
148 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefValueStatement;
149 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefWhenStatement;
150 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefYangVersionStatement;
151 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.ref.RefYinElementStatement;
152
153 /**
154  * Static entry point to enriching {@link DeclaredStatement}s covered in the {@code RFC7950} metamodel with
155  * {@link DeclarationReference}s.
156  */
157 @Beta
158 @NonNullByDefault
159 public final class DeclaredStatementDecorators {
160     private DeclaredStatementDecorators() {
161         // Hidden on purpose
162     }
163
164     public static ActionStatement decorateAction(final ActionStatement stmt, final DeclarationReference ref) {
165         return new RefActionStatement(stmt, ref);
166     }
167
168     public static AnydataStatement decorateAnydata(final AnydataStatement stmt, final DeclarationReference ref) {
169         return new RefAnydataStatement(stmt, ref);
170     }
171
172     public static AnyxmlStatement decorateAnyxml(final AnyxmlStatement stmt, final DeclarationReference ref) {
173         return new RefAnyxmlStatement(stmt, ref);
174     }
175
176     public static ArgumentStatement decorateArgument(final ArgumentStatement stmt, final DeclarationReference ref) {
177         return new RefArgumentStatement(stmt, ref);
178     }
179
180     public static AugmentStatement decorateAugment(final AugmentStatement stmt, final DeclarationReference ref) {
181         return new RefAugmentStatement(stmt, ref);
182     }
183
184     public static BaseStatement decorateBase(final BaseStatement stmt, final DeclarationReference ref) {
185         return new RefBaseStatement(stmt, ref);
186     }
187
188     public static BelongsToStatement decorateBelongsTo(final BelongsToStatement stmt, final DeclarationReference ref) {
189         return new RefBelongsToStatement(stmt, ref);
190     }
191
192     public static BitStatement decorateBit(final BitStatement stmt, final DeclarationReference ref) {
193         return new RefBitStatement(stmt, ref);
194     }
195
196     public static CaseStatement decorateCase(final CaseStatement stmt, final DeclarationReference ref) {
197         return new RefCaseStatement(stmt, ref);
198     }
199
200     public static ChoiceStatement decorateChoice(final ChoiceStatement stmt, final DeclarationReference ref) {
201         return new RefChoiceStatement(stmt, ref);
202     }
203
204     public static ConfigStatement decorateConfig(final ConfigStatement stmt, final DeclarationReference ref) {
205         return new RefConfigStatement(stmt, ref);
206     }
207
208     public static ContactStatement decorateContact(final ContactStatement stmt, final DeclarationReference ref) {
209         return new RefContactStatement(stmt, ref);
210     }
211
212     public static ContainerStatement decorateContainer(final ContainerStatement stmt, final DeclarationReference ref) {
213         return new RefContainerStatement(stmt, ref);
214     }
215
216     public static DefaultStatement decorateDefault(final DefaultStatement stmt, final DeclarationReference ref) {
217         return new RefDefaultStatement(stmt, ref);
218     }
219
220     public static DescriptionStatement decorateDescription(final DescriptionStatement stmt,
221             final DeclarationReference ref) {
222         return new RefDescriptionStatement(stmt, ref);
223     }
224
225     public static DeviateStatement decorateDeviate(final DeviateStatement stmt, final DeclarationReference ref) {
226         return new RefDeviateStatement(stmt, ref);
227     }
228
229     public static DeviationStatement decorateDeviation(final DeviationStatement stmt, final DeclarationReference ref) {
230         return new RefDeviationStatement(stmt, ref);
231     }
232
233     public static EnumStatement decorateEnum(final EnumStatement stmt, final DeclarationReference ref) {
234         return new RefEnumStatement(stmt, ref);
235     }
236
237     public static ErrorAppTagStatement decorateErrorAppTag(final ErrorAppTagStatement stmt,
238             final DeclarationReference ref) {
239         return new RefErrorAppTagStatement(stmt, ref);
240     }
241
242     public static ErrorMessageStatement decorateErrorMessage(final ErrorMessageStatement stmt,
243             final DeclarationReference ref) {
244         return new RefErrorMessageStatement(stmt, ref);
245     }
246
247     public static ExtensionStatement decorateExtesion(final ExtensionStatement stmt, final DeclarationReference ref) {
248         return new RefExtensionStatement(stmt, ref);
249     }
250
251     public static FeatureStatement decorateFeature(final FeatureStatement stmt, final DeclarationReference ref) {
252         return new RefFeatureStatement(stmt, ref);
253     }
254
255     public static FractionDigitsStatement decorateFractionDigits(final FractionDigitsStatement stmt,
256             final DeclarationReference ref) {
257         return new RefFractionDigitsStatement(stmt, ref);
258     }
259
260     public static GroupingStatement decorateGrouping(final GroupingStatement stmt, final DeclarationReference ref) {
261         return new RefGroupingStatement(stmt, ref);
262     }
263
264     public static IdentityStatement decorateIdentity(final IdentityStatement stmt, final DeclarationReference ref) {
265         return new RefIdentityStatement(stmt, ref);
266     }
267
268     public static IfFeatureStatement decorateIfFeature(final IfFeatureStatement stmt, final DeclarationReference ref) {
269         return new RefIfFeatureStatement(stmt, ref);
270     }
271
272     public static ImportStatement decorateImport(final ImportStatement stmt, final DeclarationReference ref) {
273         return new RefImportStatement(stmt, ref);
274     }
275
276     public static IncludeStatement decorateInclude(final IncludeStatement stmt, final DeclarationReference ref) {
277         return new RefIncludeStatement(stmt, ref);
278     }
279
280     public static InputStatement decorateInput(final InputStatement stmt, final DeclarationReference ref) {
281         return new RefInputStatement(stmt, ref);
282     }
283
284     public static KeyStatement decorateKey(final KeyStatement stmt, final DeclarationReference ref) {
285         return new RefKeyStatement(stmt, ref);
286     }
287
288     public static LeafStatement decorateLeaf(final LeafStatement stmt, final DeclarationReference ref) {
289         return new RefLeafStatement(stmt, ref);
290     }
291
292     public static LeafListStatement decorateLeafList(final LeafListStatement stmt, final DeclarationReference ref) {
293         return new RefLeafListStatement(stmt, ref);
294     }
295
296     public static LengthStatement decorateLength(final LengthStatement stmt, final DeclarationReference ref) {
297         return new RefLengthStatement(stmt, ref);
298     }
299
300     public static ListStatement decorateList(final ListStatement stmt, final DeclarationReference ref) {
301         return new RefListStatement(stmt, ref);
302     }
303
304     public static MandatoryStatement decorateMandatory(final MandatoryStatement stmt, final DeclarationReference ref) {
305         return new RefMandatoryStatement(stmt, ref);
306     }
307
308     public static MaxElementsStatement decorateMaxElements(final MaxElementsStatement stmt,
309             final DeclarationReference ref) {
310         return new RefMaxElementsStatement(stmt, ref);
311     }
312
313     public static MinElementsStatement decorateMinElements(final MinElementsStatement stmt,
314             final DeclarationReference ref) {
315         return new RefMinElementsStatement(stmt, ref);
316     }
317
318     public static ModifierStatement decorateModifier(final ModifierStatement stmt, final DeclarationReference ref) {
319         return new RefModifierStatement(stmt, ref);
320     }
321
322     public static ModuleStatement decorateModule(final ModuleStatement stmt, final DeclarationReference ref) {
323         return new RefModuleStatement(stmt, ref);
324     }
325
326     public static MustStatement decorateMust(final MustStatement stmt, final DeclarationReference ref) {
327         return new RefMustStatement(stmt, ref);
328     }
329
330     public static NamespaceStatement decorateNamespace(final NamespaceStatement stmt, final DeclarationReference ref) {
331         return new RefNamespaceStatement(stmt, ref);
332     }
333
334     public static NotificationStatement decorateNotification(final NotificationStatement stmt,
335             final DeclarationReference ref) {
336         return new RefNotificationStatement(stmt, ref);
337     }
338
339     public static OrderedByStatement decorateOrderedBy(final OrderedByStatement stmt,
340             final DeclarationReference ref) {
341         return new RefOrderedByStatement(stmt, ref);
342     }
343
344     public static OrganizationStatement decorateOrganization(final OrganizationStatement stmt,
345             final DeclarationReference ref) {
346         return new RefOrganizationStatement(stmt, ref);
347     }
348
349     public static OutputStatement decorateOutput(final OutputStatement stmt, final DeclarationReference ref) {
350         return new RefOutputStatement(stmt, ref);
351     }
352
353     public static PathStatement decoratePath(final PathStatement stmt, final DeclarationReference ref) {
354         return new RefPathStatement(stmt, ref);
355     }
356
357     public static PatternStatement decoratePattern(final PatternStatement stmt, final DeclarationReference ref) {
358         return new RefPatternStatement(stmt, ref);
359     }
360
361     public static PositionStatement decoratePosition(final PositionStatement stmt, final DeclarationReference ref) {
362         return new RefPositionStatement(stmt, ref);
363     }
364
365     public static PrefixStatement decoratePrefix(final PrefixStatement stmt, final DeclarationReference ref) {
366         return new RefPrefixStatement(stmt, ref);
367     }
368
369     public static PresenceStatement decoratePresence(final PresenceStatement stmt,
370             final DeclarationReference ref) {
371         return new RefPresenceStatement(stmt, ref);
372     }
373
374     public static RangeStatement decorateRange(final RangeStatement stmt, final DeclarationReference ref) {
375         return new RefRangeStatement(stmt, ref);
376     }
377
378     public static ReferenceStatement decorateReference(final ReferenceStatement stmt, final DeclarationReference ref) {
379         return new RefReferenceStatement(stmt, ref);
380     }
381
382     public static RefineStatement decorateRefine(final RefineStatement stmt, final DeclarationReference ref) {
383         return new RefRefineStatement(stmt, ref);
384     }
385
386     public static RequireInstanceStatement decorateRequireInstance(final RequireInstanceStatement stmt,
387             final DeclarationReference ref) {
388         return new RefRequireInstanceStatement(stmt, ref);
389     }
390
391     public static RevisionStatement decorateRevision(final RevisionStatement stmt, final DeclarationReference ref) {
392         return new RefRevisionStatement(stmt, ref);
393     }
394
395     public static RevisionDateStatement decorateRevisionDate(final RevisionDateStatement stmt,
396             final DeclarationReference ref) {
397         return new RefRevisionDateStatement(stmt, ref);
398     }
399
400     public static RpcStatement decorateRpc(final RpcStatement stmt, final DeclarationReference ref) {
401         return new RefRpcStatement(stmt, ref);
402     }
403
404     public static StatusStatement decorateStatus(final StatusStatement stmt, final DeclarationReference ref) {
405         return new RefStatusStatement(stmt, ref);
406     }
407
408     public static SubmoduleStatement decorateSubmodule(final SubmoduleStatement stmt, final DeclarationReference ref) {
409         return new RefSubmoduleStatement(stmt, ref);
410     }
411
412     public static TypeStatement decorateType(final TypeStatement stmt, final DeclarationReference ref) {
413         return new RefTypeStatement(stmt, ref);
414     }
415
416     public static TypedefStatement decorateTypedef(final TypedefStatement stmt, final DeclarationReference ref) {
417         return new RefTypedefStatement(stmt, ref);
418     }
419
420     public static UniqueStatement decorateUnique(final UniqueStatement stmt, final DeclarationReference ref) {
421         return new RefUniqueStatement(stmt, ref);
422     }
423
424     public static UnitsStatement decorateUnits(final UnitsStatement stmt, final DeclarationReference ref) {
425         return new RefUnitsStatement(stmt, ref);
426     }
427
428     public static UnrecognizedStatement decorateUnrecognized(final UnrecognizedStatement stmt,
429             final DeclarationReference ref) {
430         return new RefUnrecognizedStatement(stmt, ref);
431     }
432
433     public static UsesStatement decorateUses(final UsesStatement stmt, final DeclarationReference ref) {
434         return new RefUsesStatement(stmt, ref);
435     }
436
437     public static ValueStatement decorateValue(final ValueStatement stmt, final DeclarationReference ref) {
438         return new RefValueStatement(stmt, ref);
439     }
440
441     public static WhenStatement decorateWhen(final WhenStatement stmt, final DeclarationReference ref) {
442         return new RefWhenStatement(stmt, ref);
443     }
444
445     public static YangVersionStatement decorateYangVersion(final YangVersionStatement stmt,
446             final DeclarationReference ref) {
447         return new RefYangVersionStatement(stmt, ref);
448     }
449
450     public static YinElementStatement decorateYinElement(final YinElementStatement stmt,
451             final DeclarationReference ref) {
452         return new RefYinElementStatement(stmt, ref);
453     }
454 }