class ModuleUsesDirective extends ModuleDirective implements NodeWithName<ModuleUsesDirective> {

    private Name name;

    public ModuleUsesDirective() {
        this(null, new Name());
    }

    @AllFieldsConstructor
    public ModuleUsesDirective(Name name) {
        this(null, name);
    }

    /**
     * This constructor is used by the parser and is considered private.
     */
    @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
    public ModuleUsesDirective(TokenRange tokenRange, Name name) {
        super(tokenRange);
        setName(name);
        customInitialization();
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
    public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) {
        return v.visit(this, arg);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
    public <A> void accept(final VoidVisitor<A> v, final A arg) {
        v.visit(this, arg);
    }

    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
    public ModuleUsesDirective setType(final Name name) {
        assertNotNull(name);
        if (name == this.name) {
            return (ModuleUsesDirective) this;
        }
        notifyPropertyChange(ObservableProperty.TYPE, this.name, name);
        if (this.name != null)
            this.name.setParentNode(null);
        this.name = name;
        setAsParentNodeOf(name);
        return this;
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.CloneGenerator")
    public ModuleUsesDirective clone() {
        return (ModuleUsesDirective) accept(new CloneVisitor(), null);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public boolean isModuleUsesStmt() {
        return true;
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public ModuleUsesDirective asModuleUsesStmt() {
        return this;
    }

    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public void ifModuleUsesStmt(Consumer<ModuleUsesDirective> action) {
        action.accept(this);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public Optional<ModuleUsesDirective> toModuleUsesStmt() {
        return Optional.of(this);
    }

    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
    public Name getName() {
        return name;
    }

    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
    public ModuleUsesDirective setName(final Name name) {<FILL_FUNCTION_BODY>}

    @Override
    @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator")
    public boolean replace(Node node, Node replacementNode) {
        if (node == null) {
            return false;
        }
        if (node == name) {
            setName((Name) replacementNode);
            return true;
        }
        return super.replace(node, replacementNode);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public boolean isModuleUsesDirective() {
        return true;
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public ModuleUsesDirective asModuleUsesDirective() {
        return this;
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public Optional<ModuleUsesDirective> toModuleUsesDirective() {
        return Optional.of(this);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
    public void ifModuleUsesDirective(Consumer<ModuleUsesDirective> action) {
        action.accept(this);
    }

    @Override
    @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator")
    public ModuleUsesDirectiveMetaModel getMetaModel() {
        return JavaParserMetaModel.moduleUsesDirectiveMetaModel;
    }
}

        assertNotNull(name);
        if (name == this.name) {
            return this;
        }
        notifyPropertyChange(ObservableProperty.NAME, this.name, name);
        if (this.name != null)
            this.name.setParentNode(null);
        this.name = name;
        setAsParentNodeOf(name);
        return this;
    
<methods>public void <init>() ,public void <init>(com.github.javaparser.TokenRange) ,public com.github.javaparser.ast.modules.ModuleExportsDirective asModuleExportsDirective() ,public com.github.javaparser.ast.modules.ModuleExportsDirective asModuleExportsStmt() ,public com.github.javaparser.ast.modules.ModuleOpensDirective asModuleOpensDirective() ,public com.github.javaparser.ast.modules.ModuleOpensDirective asModuleOpensStmt() ,public com.github.javaparser.ast.modules.ModuleProvidesDirective asModuleProvidesDirective() ,public com.github.javaparser.ast.modules.ModuleProvidesDirective asModuleProvidesStmt() ,public com.github.javaparser.ast.modules.ModuleRequiresDirective asModuleRequiresDirective() ,public com.github.javaparser.ast.modules.ModuleRequiresDirective asModuleRequiresStmt() ,public com.github.javaparser.ast.modules.ModuleUsesDirective asModuleUsesDirective() ,public com.github.javaparser.ast.modules.ModuleUsesDirective asModuleUsesStmt() ,public com.github.javaparser.ast.modules.ModuleDirective clone() ,public com.github.javaparser.metamodel.ModuleDirectiveMetaModel getMetaModel() ,public void ifModuleExportsDirective(Consumer<com.github.javaparser.ast.modules.ModuleExportsDirective>) ,public void ifModuleExportsStmt(Consumer<com.github.javaparser.ast.modules.ModuleExportsDirective>) ,public void ifModuleOpensDirective(Consumer<com.github.javaparser.ast.modules.ModuleOpensDirective>) ,public void ifModuleOpensStmt(Consumer<com.github.javaparser.ast.modules.ModuleOpensDirective>) ,public void ifModuleProvidesDirective(Consumer<com.github.javaparser.ast.modules.ModuleProvidesDirective>) ,public void ifModuleProvidesStmt(Consumer<com.github.javaparser.ast.modules.ModuleProvidesDirective>) ,public void ifModuleRequiresDirective(Consumer<com.github.javaparser.ast.modules.ModuleRequiresDirective>) ,public void ifModuleRequiresStmt(Consumer<com.github.javaparser.ast.modules.ModuleRequiresDirective>) ,public void ifModuleUsesDirective(Consumer<com.github.javaparser.ast.modules.ModuleUsesDirective>) ,public void ifModuleUsesStmt(Consumer<com.github.javaparser.ast.modules.ModuleUsesDirective>) ,public boolean isModuleExportsDirective() ,public boolean isModuleExportsStmt() ,public boolean isModuleOpensDirective() ,public boolean isModuleOpensStmt() ,public boolean isModuleProvidesDirective() ,public boolean isModuleProvidesStmt() ,public boolean isModuleRequiresDirective() ,public boolean isModuleRequiresStmt() ,public boolean isModuleUsesDirective() ,public boolean isModuleUsesStmt() ,public Optional<com.github.javaparser.ast.modules.ModuleExportsDirective> toModuleExportsDirective() ,public Optional<com.github.javaparser.ast.modules.ModuleExportsDirective> toModuleExportsStmt() ,public Optional<com.github.javaparser.ast.modules.ModuleOpensDirective> toModuleOpensDirective() ,public Optional<com.github.javaparser.ast.modules.ModuleOpensDirective> toModuleOpensStmt() ,public Optional<com.github.javaparser.ast.modules.ModuleProvidesDirective> toModuleProvidesDirective() ,public Optional<com.github.javaparser.ast.modules.ModuleProvidesDirective> toModuleProvidesStmt() ,public Optional<com.github.javaparser.ast.modules.ModuleRequiresDirective> toModuleRequiresDirective() ,public Optional<com.github.javaparser.ast.modules.ModuleRequiresDirective> toModuleRequiresStmt() ,public Optional<com.github.javaparser.ast.modules.ModuleUsesDirective> toModuleUsesDirective() ,public Optional<com.github.javaparser.ast.modules.ModuleUsesDirective> toModuleUsesStmt() <variables>