class TypedOperation::Base
def attribute(name, type, special = nil, reader: :public, writer: :public, positional: false, default: nil)
def attribute(name, type, special = nil, reader: :public, writer: :public, positional: false, default: nil) super(name, type, special, reader:, writer: false, positional:, default:) end
def with(...)
def with(...) # copy to new operation with new attrs self.class.new(**attributes.merge(...)) end