module Prism
  class InspectVisitor < Visitor
    class Replace
      attr_reader value: String

      def initialize: (String value) -> void
    end

    attr_reader indent: String
    attr_reader commands: Array[[String | node | Replace, String]]

    def initialize: (?String indent) -> void
    def compose: () -> String

    def self.compose: (node node) -> String

    private

    def inspect_node: (String name, node node) -> String
    def inspect_location: (Location? location) -> String
  end
end
