import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement;
import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement;
import org.opendaylight.yangtools.yang.common.Empty;
extends UnknownEffectiveStatementBase<Empty, OpenConfigHashedValueStatement>
implements OpenConfigHashedValueEffectiveStatement {
private final @NonNull StatementDefinition definition;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
Effective(final Current<Empty, OpenConfigHashedValueStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesEffectiveStatement;
import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesSchemaNode;
import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesStatement;
private static final class Effective
extends UnknownEffectiveStatementBase<Empty, GetFilterElementAttributesStatement>
implements GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesSchemaNode {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
Effective(final Current<Empty, GetFilterElementAttributesStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllEffectiveStatement;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllSchemaNode;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllStatement;
private static final class Effective extends UnknownEffectiveStatementBase<Empty, DefaultDenyAllStatement>
implements DefaultDenyAllEffectiveStatement, DefaultDenyAllSchemaNode {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
Effective(final Current<Empty, DefaultDenyAllStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteEffectiveStatement;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteSchemaNode;
import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteStatement;
private static final class Effective extends UnknownEffectiveStatementBase<Empty, DefaultDenyWriteStatement>
implements DefaultDenyWriteEffectiveStatement, DefaultDenyWriteSchemaNode {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
Effective(final Current<Empty, DefaultDenyWriteStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.concepts.Mutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
return SchemaPathSupport.extractPath(this, pathObject());
}
- @NonNull Object pathObject();
+ @NonNull Immutable pathObject();
}
/**
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
final class ActionEffectiveStatementImpl extends WithSubstatements<QName, ActionStatement, ActionEffectiveStatement>
implements ActionDefinition, ActionEffectiveStatement, OperationDefinitionMixin<ActionStatement>,
CopyableMixin<QName, ActionStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
- ActionEffectiveStatementImpl(final ActionStatement declared, final Object path, final int flags,
+ ActionEffectiveStatementImpl(final ActionStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final Object path, final int flags) {
+ ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final Immutable path, final int flags) {
super(original);
this.path = requireNonNull(path);
this.flags = flags;
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Status;
.setConfiguration(stmt.effectiveConfig().asNullable())
.setMandatory(findFirstArgument(substatements, MandatoryEffectiveStatement.class, Boolean.FALSE))
.toFlags();
- final Object path = stmt.effectivePath();
+ final Immutable path = stmt.effectivePath();
return substatements.isEmpty()
? new EmptyAnydataEffectiveStatement(stmt.declared(), path, flags, findOriginal(stmt))
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatement>
implements AnydataEffectiveStatement, AnydataSchemaNode, OpaqueDataSchemaNodeMixin<AnydataStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final AnydataSchemaNode original;
private final int flags;
- EmptyAnydataEffectiveStatement(final AnydataStatement declared, final Object path, final int flags,
+ EmptyAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags,
final @Nullable AnydataSchemaNode original) {
super(declared);
this.path = requireNonNull(path);
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
final class RegularAnydataEffectiveStatement extends EmptyAnydataEffectiveStatement {
private final @NonNull Object substatements;
- RegularAnydataEffectiveStatement(final AnydataStatement declared, final Object path, final int flags,
+ RegularAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags,
final @Nullable AnydataSchemaNode original,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, path, flags, original);
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Status;
.setConfiguration(stmt.effectiveConfig().asNullable())
.setMandatory(findFirstArgument(substatements, MandatoryEffectiveStatement.class, Boolean.FALSE))
.toFlags();
- final Object path = stmt.effectivePath();
+ final Immutable path = stmt.effectivePath();
return substatements.isEmpty()
? new EmptyAnyxmlEffectiveStatement(stmt.declared(), path, flags, findOriginal(stmt))
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatement>
implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, OpaqueDataSchemaNodeMixin<AnyxmlStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final AnyxmlSchemaNode original;
private final int flags;
- EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Object path, final int flags,
+ EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags,
final @Nullable AnyxmlSchemaNode original) {
super(declared);
this.path = requireNonNull(path);
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
final class RegularAnyxmlEffectiveStatement extends EmptyAnyxmlEffectiveStatement {
private final @NonNull Object substatements;
- RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Object path, final int flags,
+ RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags,
final @Nullable AnyxmlSchemaNode original,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, path, flags, original);
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
implements CaseEffectiveStatementMixin {
private final CaseSchemaNode original;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
DeclaredCaseEffectiveStatement(final CaseStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags,
- final @Nullable CaseSchemaNode original) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags, final @Nullable CaseSchemaNode original) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
this.original = original;
}
- DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Object path,
+ DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
final int flags, final @Nullable CaseSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
implements CaseEffectiveStatementMixin {
private final @Nullable CaseSchemaNode original;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
- final Object path, final int flags, final @Nullable CaseSchemaNode original) {
+ final Immutable path, final int flags, final @Nullable CaseSchemaNode original) {
super(substatements);
this.path = requireNonNull(path);
this.flags = flags;
this.original = original;
}
- UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Object path,
+ UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
final int flags, final @Nullable CaseSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
MandatoryMixin<QName, ChoiceStatement> {
private final CaseSchemaNode defaultCase;
private final ChoiceSchemaNode original;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
ChoiceEffectiveStatementImpl(final ChoiceStatement declared,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final int flags,
- final Object path, final @Nullable CaseSchemaNode defaultCase,
+ final Immutable path, final @Nullable CaseSchemaNode defaultCase,
final @Nullable ChoiceSchemaNode original) {
super(declared, substatements);
this.path = requireNonNull(path);
}
ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final int flags,
- final Object path, final ChoiceSchemaNode original) {
+ final Immutable path, final ChoiceSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
this.flags = flags;
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
AugmentationTargetMixin<QName, ContainerStatement> {
private final int flags;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final @Nullable ContainerSchemaNode original;
ContainerEffectiveStatementImpl(final ContainerStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags,
- final ContainerSchemaNode original) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags, final ContainerSchemaNode original) {
super(declared, substatements);
this.path = requireNonNull(path);
this.original = original;
this.flags = flags;
}
- ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final Object path,
+ ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final Immutable path,
final int flags, final ContainerSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
import org.opendaylight.yangtools.yang.model.api.stmt.FeatureEffectiveStatement;
class EmptyFeatureEffectiveStatement extends Default<QName, FeatureStatement>
implements FeatureDefinition, FeatureEffectiveStatement, SchemaNodeMixin<QName, FeatureStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
- EmptyFeatureEffectiveStatement(final FeatureStatement declared, final Object path, final int flags) {
+ EmptyFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags) {
super(declared);
this.path = requireNonNull(path);
this.flags = flags;
@Override
@Deprecated
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
final class RegularFeatureEffectiveStatement extends EmptyFeatureEffectiveStatement {
private final @NonNull Object substatements;
- RegularFeatureEffectiveStatement(final FeatureStatement declared, final Object path, final int flags,
+ RegularFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, path, flags);
this.substatements = maskList(substatements);
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
DataNodeContainerMixin<QName, GroupingStatement>,
SchemaNodeMixin<QName, GroupingStatement>, ActionNodeContainerMixin<QName, GroupingStatement>,
NotificationNodeContainerMixin<QName, GroupingStatement>, AddedByUsesMixin<QName, GroupingStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
GroupingEffectiveStatementImpl(final GroupingStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.base.MoreObjects;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
abstract class AbstractIdentityEffectiveStatement extends DefaultArgument<QName, IdentityStatement>
implements IdentityEffectiveStatement, IdentitySchemaNode, SchemaNodeMixin<QName, IdentityStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
- AbstractIdentityEffectiveStatement(final IdentityStatement declared, final Object path) {
+ AbstractIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path) {
super(declared);
this.path = requireNonNull(path);
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
final class EmptyIdentityEffectiveStatement extends AbstractIdentityEffectiveStatement {
private static final int CURRENT_FLAGS = new FlagsBuilder().setStatus(Status.CURRENT).toFlags();
- EmptyIdentityEffectiveStatement(final IdentityStatement declared, final Object path) {
+ EmptyIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path) {
super(declared, path);
}
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
private final @NonNull Object substatements;
private final int flags;
- RegularIdentityEffectiveStatement(final IdentityStatement declared, final Object path, final int flags,
+ RegularIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final ImmutableSet<? extends IdentitySchemaNode> baseIdentities) {
super(declared, path);
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
final class DeclaredInputEffectiveStatement extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
DeclaredInputEffectiveStatement(final InputStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final Object path,
+ DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
final class UndeclaredInputEffectiveStatement
extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
UndeclaredInputEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
- final Object path, final int flags) {
+ final Immutable path, final int flags) {
super(substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final Object path,
+ UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
DataSchemaNodeMixin<QName, LeafStatement>, MandatoryMixin<QName, LeafStatement>,
MustConstraintMixin<QName, LeafStatement> {
private final @NonNull Object substatements;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final @NonNull TypeDefinition<?> type;
private final int flags;
- AbstractLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+ AbstractLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared);
this.path = requireNonNull(path);
this.type = buildType();
}
- AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final Object path,
+ AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
final class EmptyLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
- EmptyLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+ EmptyLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, path, flags, substatements);
}
- EmptyLeafEffectiveStatement(final EmptyLeafEffectiveStatement original, final Object path, final int flags) {
+ EmptyLeafEffectiveStatement(final EmptyLeafEffectiveStatement original, final Immutable path, final int flags) {
super(original, path, flags);
}
import com.google.common.collect.ImmutableList;
import java.util.Optional;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
final class RegularLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
private final @Nullable LeafSchemaNode original;
- RegularLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+ RegularLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafSchemaNode original) {
super(declared, path, flags, substatements);
this.original = original;
}
- RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final Object path,
+ RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final Immutable path,
final int flags, final LeafSchemaNode original) {
super(originalEffective, path, flags);
this.original = original;
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
UserOrderedMixin<QName, LeafListStatement>, DataSchemaNodeMixin<QName, LeafListStatement>,
MustConstraintMixin<QName, LeafListStatement> {
private final @NonNull Object substatements;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final @NonNull TypeDefinition<?> type;
private final int flags;
- AbstractLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+ AbstractLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared);
this.path = requireNonNull(path);
this.type = buildType();
}
- AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final Object path,
+ AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import java.util.Optional;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
private final @Nullable LeafListSchemaNode original;
private final @Nullable ElementCountConstraint elementCountConstraint;
- AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+ AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
super(declared, path, flags, substatements);
}
AbstractNonEmptyLeafListEffectiveStatement(final AbstractNonEmptyLeafListEffectiveStatement originalEffecive,
- final LeafListSchemaNode original, final Object path, final int flags) {
+ final LeafListSchemaNode original, final Immutable path, final int flags) {
super(originalEffecive, path, flags);
this.elementCountConstraint = originalEffecive.elementCountConstraint;
this.original = original;
}
AbstractNonEmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
- final LeafListSchemaNode original, final Object path, final int flags) {
+ final LeafListSchemaNode original, final Immutable path, final int flags) {
super(originalEffective, path, flags);
this.elementCountConstraint = null;
this.original = original;
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
final class EmptyLeafListEffectiveStatement extends AbstractLeafListEffectiveStatement {
- EmptyLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+ EmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared, path, flags, substatements);
}
- EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final Object path,
+ EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final Immutable path,
final int flags) {
super(original, path, flags);
}
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
final class RegularLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement {
private final @NonNull ImmutableSet<String> defaults;
- RegularLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+ RegularLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafListSchemaNode original,
final ImmutableSet<String> defaults, final ElementCountConstraint elementCountConstraint) {
super(declared, path, flags, substatements, original, elementCountConstraint);
}
RegularLeafListEffectiveStatement(final RegularLeafListEffectiveStatement originalEffective,
- final LeafListSchemaNode original, final Object path, final int flags) {
+ final LeafListSchemaNode original, final Immutable path, final int flags) {
super(originalEffective, original, path, flags);
this.defaults = originalEffective.defaults;
}
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
final class SlimLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement {
- SlimLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+ SlimLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
super(declared, path, flags, substatements, original, elementCountConstraint);
}
SlimLeafListEffectiveStatement(final SlimLeafListEffectiveStatement originalEffective,
- final LeafListSchemaNode original, final Object path, final int flags) {
+ final LeafListSchemaNode original, final Immutable path, final int flags) {
super(originalEffective, original, path, flags);
}
SlimLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
- final LeafListSchemaNode original, final Object path, final int flags) {
+ final LeafListSchemaNode original, final Immutable path, final int flags) {
super(originalEffective, original, path, flags);
}
import java.util.Collection;
import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
ActionNodeContainerMixin<QName, ListStatement>, MustConstraintMixin<QName, ListStatement> {
private final int flags;
private final @NonNull Object substatements;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final @NonNull Object keyDefinition;
- AbstractListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+ AbstractListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final ImmutableList<QName> keyDefinition) {
super(declared, substatements);
this.flags = flags;
}
- AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final Object path, final int flags) {
+ AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final Immutable path,
+ final int flags) {
super(original);
this.path = requireNonNull(path);
this.substatements = original.substatements;
}
@Override
- public final Object pathObject() {
+ public final Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
final class EmptyListEffectiveStatement extends AbstractListEffectiveStatement {
- EmptyListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+ EmptyListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final ImmutableList<QName> keyDefinition) {
super(declared, path, flags, substatements, keyDefinition);
}
- EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final Object path, final int flags) {
+ EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final Immutable path, final int flags) {
super(original, path, flags);
}
import java.util.Optional;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.Ordering;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
final Optional<ElementCountConstraint> elementCountConstraint =
EffectiveStmtUtils.createElementCountConstraint(substatements);
- final Object path = stmt.effectivePath();
+ final Immutable path = stmt.effectivePath();
final ListSchemaNode original = (ListSchemaNode) stmt.original();
try {
return original == null && !elementCountConstraint.isPresent()
import com.google.common.collect.ImmutableList;
import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
private final ElementCountConstraint elementCountConstraint;
private final ListSchemaNode original;
- RegularListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+ RegularListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final ImmutableList<QName> keyDefinition, final ElementCountConstraint elementCountConstraint,
final ListSchemaNode original) {
}
RegularListEffectiveStatement(final RegularListEffectiveStatement originalEffective, final ListSchemaNode original,
- final Object path, final int flags) {
+ final Immutable path, final int flags) {
super(originalEffective, path, flags);
this.elementCountConstraint = originalEffective.elementCountConstraint;
this.original = original;
}
RegularListEffectiveStatement(final EmptyListEffectiveStatement originalEffective, final ListSchemaNode original,
- final Object path, final int flags) {
+ final Immutable path, final int flags) {
super(originalEffective, path, flags);
this.elementCountConstraint = null;
this.original = original;
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
AugmentationTargetMixin<QName, NotificationStatement>, CopyableMixin<QName, NotificationStatement>,
MustConstraintMixin<QName, NotificationStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
NotificationEffectiveStatementImpl(final NotificationStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final Object path,
+ NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
final class DeclaredOutputEffectiveStatement extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
DeclaredOutputEffectiveStatement(final OutputStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+ final int flags) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final Object path,
+ DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
final class UndeclaredOutputEffectiveStatement
extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
UndeclaredOutputEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
- final Object path, final int flags) {
+ final Immutable path, final int flags) {
super(substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
- UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final Object path,
+ UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final Immutable path,
final int flags) {
super(original);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
final class RpcEffectiveStatementImpl extends WithSubstatements<QName, RpcStatement, RpcEffectiveStatement>
implements RpcDefinition, RpcEffectiveStatement, OperationDefinitionMixin<RpcStatement> {
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
RpcEffectiveStatementImpl(final RpcStatement declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path, final int flags) {
super(declared, substatements);
this.path = requireNonNull(path);
this.flags = flags;
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
import java.util.Map;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
}
private final @NonNull Object substatements;
- private final @NonNull Object path;
+ private final @NonNull Immutable path;
private final int flags;
// Accessed via TYPE_DEFINITION
@SuppressWarnings("unused")
private volatile ProxyTypeEffectiveStatement typeStatement;
- TypedefEffectiveStatementImpl(final TypedefStatement declared, final Object path, final int flags,
+ TypedefEffectiveStatementImpl(final TypedefStatement declared, final Immutable path, final int flags,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(declared);
this.path = requireNonNull(path);
}
@Override
- public Object pathObject() {
+ public Immutable pathObject() {
return path;
}
*
* <p>
* Returned object conforms to {@link SchemaPathSupport}'s view of how these are to be handled. Users of this
- * method are expected to consult {@link SchemaPathSupport#extractQName(Object)} and
- * {@link SchemaPathSupport#extractPath(Object, Object)} to ensure correct implementation behaviour with respect
- * to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively.
+ * method are expected to consult {@link SchemaPathSupport#extractQName(Immutable)} and
+ * {@link SchemaPathSupport#extractPath(Object, Immutable)} to ensure correct implementation behaviour with
+ * respect to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively.
*
- * @return An effective path object
+ * @return An {@link Immutable} effective path object
*/
// FIXME: Remove this when SchemaNode.getPath() is removed. QName users will store getArgument() instead.
- default @NonNull Object effectivePath() {
+ default @NonNull Immutable effectivePath() {
return SchemaPathSupport.toEffectivePath(getSchemaPath());
}
// Hidden on purpose
}
- public static @NonNull Object toEffectivePath(final @NonNull SchemaPath path) {
+ public static @NonNull Immutable toEffectivePath(final @NonNull SchemaPath path) {
return DEFAULT.effectivePath(path);
}
return DEFAULT.equalPaths(first, second);
}
- public static @NonNull QName extractQName(final @NonNull Object path) {
- return path instanceof QName ? (QName) path : verifyNotNull(((SchemaPath) path).getLastComponent());
+ public static @NonNull QName extractQName(final @NonNull Immutable path) {
+ if (path instanceof SchemaPath) {
+ return verifyNotNull(((SchemaPath) path).getLastComponent());
+ } else if (path instanceof QName) {
+ return (QName) path;
+ } else {
+ throw new IllegalArgumentException("Unhandled object " + path);
+ }
}
- public static @NonNull SchemaPath extractPath(final @NonNull Object impl, final @NonNull Object path) {
+ public static @NonNull SchemaPath extractPath(final @NonNull Object impl, final @NonNull Immutable path) {
return path instanceof SchemaPath ? (SchemaPath) path : SchemaNodeDefaults.throwUnsupported(impl);
}
abstract boolean equalPaths(@Nullable SchemaPath first, @Nullable SchemaPath second);
- abstract @NonNull Object effectivePath(@NonNull SchemaPath path);
+ abstract @NonNull Immutable effectivePath(@NonNull SchemaPath path);
abstract @Nullable SchemaPath optionalPath(@Nullable SchemaPath path);
}