# This is an autogenerated file for dynamic methods in ActsAsMessageable::Message # Please rerun bundle exec rake rails_rbi:models[ActsAsMessageable::Message] to regenerate. # typed: strong module ActsAsMessageable::Message::ActiveRelation_WhereNot sig { params(opts: T.untyped, rest: T.untyped).returns(T.self_type) } def not(opts, *rest); end end module ActsAsMessageable::Message::GeneratedAttributeMethods sig { returns(T.nilable(String)) } def ancestry; end sig { params(value: T.nilable(T.any(String, Symbol))).void } def ancestry=(value); end sig { returns(T::Boolean) } def ancestry?; end sig { returns(String) } def body; end sig { params(value: T.any(String, Symbol)).void } def body=(value); end sig { returns(T::Boolean) } def body?; end sig { returns(Time) } def created_at; end sig { params(value: Time).void } def created_at=(value); end sig { returns(T::Boolean) } def created_at?; end sig { returns(T.nilable(Time)) } def datetime; end sig { params(value: T.nilable(Time)).void } def datetime=(value); end sig { returns(T::Boolean) } def datetime?; end sig { returns(Integer) } def id; end sig { params(value: T.any(Numeric, ActiveSupport::Duration)).void } def id=(value); end sig { returns(T::Boolean) } def id?; end sig { returns(T.nilable(T::Boolean)) } def opened; end sig { params(value: T.nilable(T::Boolean)).void } def opened=(value); end sig { returns(T::Boolean) } def opened?; end sig { returns(T.nilable(Time)) } def opened_at; end sig { params(value: T.nilable(Time)).void } def opened_at=(value); end sig { returns(T::Boolean) } def opened_at?; end sig { returns(T.nilable(Integer)) } def received_messageable_id; end sig { params(value: T.nilable(T.any(Numeric, ActiveSupport::Duration))).void } def received_messageable_id=(value); end sig { returns(T::Boolean) } def received_messageable_id?; end sig { returns(T.nilable(String)) } def received_messageable_type; end sig { params(value: T.nilable(T.any(String, Symbol))).void } def received_messageable_type=(value); end sig { returns(T::Boolean) } def received_messageable_type?; end sig { returns(T.nilable(T::Boolean)) } def recipient_delete; end sig { params(value: T.nilable(T::Boolean)).void } def recipient_delete=(value); end sig { returns(T::Boolean) } def recipient_delete?; end sig { returns(T.nilable(T::Boolean)) } def recipient_permanent_delete; end sig { params(value: T.nilable(T::Boolean)).void } def recipient_permanent_delete=(value); end sig { returns(T::Boolean) } def recipient_permanent_delete?; end sig { returns(T.nilable(T::Boolean)) } def sender_delete; end sig { params(value: T.nilable(T::Boolean)).void } def sender_delete=(value); end sig { returns(T::Boolean) } def sender_delete?; end sig { returns(T.nilable(T::Boolean)) } def sender_permanent_delete; end sig { params(value: T.nilable(T::Boolean)).void } def sender_permanent_delete=(value); end sig { returns(T::Boolean) } def sender_permanent_delete?; end sig { returns(T.nilable(Integer)) } def sent_messageable_id; end sig { params(value: T.nilable(T.any(Numeric, ActiveSupport::Duration))).void } def sent_messageable_id=(value); end sig { returns(T::Boolean) } def sent_messageable_id?; end sig { returns(T.nilable(String)) } def sent_messageable_type; end sig { params(value: T.nilable(T.any(String, Symbol))).void } def sent_messageable_type=(value); end sig { returns(T::Boolean) } def sent_messageable_type?; end sig { returns(String) } def topic; end sig { params(value: T.any(String, Symbol)).void } def topic=(value); end sig { returns(T::Boolean) } def topic?; end sig { returns(Time) } def updated_at; end sig { params(value: Time).void } def updated_at=(value); end sig { returns(T::Boolean) } def updated_at?; end end module ActsAsMessageable::Message::GeneratedAssociationMethods sig { returns(T.untyped) } def received_messageable; end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def build_received_messageable(*args, &block); end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def create_received_messageable(*args, &block); end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def create_received_messageable!(*args, &block); end sig { params(value: T.untyped).void } def received_messageable=(value); end sig { returns(T.untyped) } def reload_received_messageable; end sig { returns(T.untyped) } def sent_messageable; end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def build_sent_messageable(*args, &block); end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def create_sent_messageable(*args, &block); end sig { params(args: T.untyped, block: T.nilable(T.proc.params(object: T.untyped).void)).returns(T.untyped) } def create_sent_messageable!(*args, &block); end sig { params(value: T.untyped).void } def sent_messageable=(value); end sig { returns(T.untyped) } def reload_sent_messageable; end end module ActsAsMessageable::Message::CustomFinderMethods sig { params(limit: Integer).returns(T::Array[ActsAsMessageable::Message]) } def first_n(limit); end sig { params(limit: Integer).returns(T::Array[ActsAsMessageable::Message]) } def last_n(limit); end sig { params(args: T::Array[T.any(Integer, String)]).returns(T::Array[ActsAsMessageable::Message]) } def find_n(*args); end sig { params(id: T.nilable(Integer)).returns(T.nilable(ActsAsMessageable::Message)) } def find_by_id(id); end sig { params(id: Integer).returns(ActsAsMessageable::Message) } def find_by_id!(id); end end class ActsAsMessageable::Message < ActiveRecord::Base include ActsAsMessageable::Message::GeneratedAttributeMethods include ActsAsMessageable::Message::GeneratedAssociationMethods extend ActsAsMessageable::Message::CustomFinderMethods extend ActsAsMessageable::Message::QueryMethodsReturningRelation RelationType = T.type_alias do T.any(ActsAsMessageable::Message::ActiveRecord_Relation, ActsAsMessageable::Message::ActiveRecord_Associations_CollectionProxy, ActsAsMessageable::Message::ActiveRecord_AssociationRelation) end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.after_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.are_from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.are_to(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.at_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.before_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.connected_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.deleted(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.from_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.readed(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.search(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.to_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def self.unreaded(*args); end end class ActsAsMessageable::Message::ActiveRecord_Relation < ActiveRecord::Relation include ActsAsMessageable::Message::ActiveRelation_WhereNot include ActsAsMessageable::Message::CustomFinderMethods include ActsAsMessageable::Message::QueryMethodsReturningRelation Elem = type_member { { fixed: ActsAsMessageable::Message } } sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def after_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def are_from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def are_to(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def at_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def before_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def connected_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def deleted(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def from_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def readed(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def search(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def to_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def unreaded(*args); end end class ActsAsMessageable::Message::ActiveRecord_AssociationRelation < ActiveRecord::AssociationRelation include ActsAsMessageable::Message::ActiveRelation_WhereNot include ActsAsMessageable::Message::CustomFinderMethods include ActsAsMessageable::Message::QueryMethodsReturningAssociationRelation Elem = type_member { { fixed: ActsAsMessageable::Message } } sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def after_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def are_from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def are_to(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def at_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def before_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def connected_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def deleted(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def from_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def readed(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def search(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def to_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def unreaded(*args); end end class ActsAsMessageable::Message::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy include ActsAsMessageable::Message::CustomFinderMethods include ActsAsMessageable::Message::QueryMethodsReturningAssociationRelation Elem = type_member { { fixed: ActsAsMessageable::Message } } sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def after_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def are_from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def are_to(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def at_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def before_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def connected_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def deleted(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def from_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def readed(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def search(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def to_depth(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def unreaded(*args); end sig { params(records: T.any(ActsAsMessageable::Message, T::Array[ActsAsMessageable::Message])).returns(T.self_type) } def <<(*records); end sig { params(records: T.any(ActsAsMessageable::Message, T::Array[ActsAsMessageable::Message])).returns(T.self_type) } def append(*records); end sig { params(records: T.any(ActsAsMessageable::Message, T::Array[ActsAsMessageable::Message])).returns(T.self_type) } def push(*records); end sig { params(records: T.any(ActsAsMessageable::Message, T::Array[ActsAsMessageable::Message])).returns(T.self_type) } def concat(*records); end end module ActsAsMessageable::Message::QueryMethodsReturningRelation sig { returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def all; end sig { params(block: T.nilable(T.proc.void)).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def unscoped(&block); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def reselect(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def order(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def reorder(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def group(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def limit(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def offset(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def left_joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def left_outer_joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def where(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def rewhere(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def preload(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def extract_associated(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def eager_load(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def includes(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def lock(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def readonly(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def or(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def having(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def create_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def distinct(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def references(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def none(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def unscope(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def optimizer_hints(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def merge(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def except(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def only(*args); end sig do params(block: T.proc.params(e: ActsAsMessageable::Message).returns(T::Boolean)).returns(T::Array[ActsAsMessageable::Message]) end def select(&block); end sig do params(args: T.any(String, Symbol, T::Array[T.any(String, Symbol)])).returns(ActsAsMessageable::Message::ActiveRecord_Relation) end def select_columns(*args); end sig { params(args: Symbol).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def where_missing(*args); end sig { params(column: Symbol, values: T::Array[T.untyped]).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def in_order_of(column, values); end sig do params(args: T.untyped, block: T.nilable(T.proc.void)).returns(ActsAsMessageable::Message::ActiveRecord_Relation) end def extending(*args, &block); end sig do params( of: T.nilable(Integer), start: T.nilable(Integer), finish: T.nilable(Integer), load: T.nilable(T::Boolean), error_on_ignore: T.nilable(T::Boolean), block: T.nilable(T.proc.params(e: ActsAsMessageable::Message::ActiveRecord_Relation).void) ).returns(ActiveRecord::Batches::BatchEnumerator) end def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, &block); end end module ActsAsMessageable::Message::QueryMethodsReturningAssociationRelation sig { returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def all; end sig { params(block: T.nilable(T.proc.void)).returns(ActsAsMessageable::Message::ActiveRecord_Relation) } def unscoped(&block); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def reselect(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def order(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def reorder(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def group(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def limit(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def offset(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def left_joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def left_outer_joins(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def where(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def rewhere(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def preload(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def extract_associated(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def eager_load(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def includes(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def from(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def lock(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def readonly(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def or(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def having(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def create_with(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def distinct(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def references(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def none(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def unscope(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def optimizer_hints(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def merge(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def except(*args); end sig { params(args: T.untyped).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def only(*args); end sig do params(block: T.proc.params(e: ActsAsMessageable::Message).returns(T::Boolean)).returns(T::Array[ActsAsMessageable::Message]) end def select(&block); end sig do params(args: T.any(String, Symbol, T::Array[T.any(String, Symbol)])).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) end def select_columns(*args); end sig { params(args: Symbol).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) } def where_missing(*args); end sig do params(column: Symbol, values: T::Array[T.untyped]).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) end def in_order_of(column, values); end sig do params(args: T.untyped, block: T.nilable(T.proc.void)).returns(ActsAsMessageable::Message::ActiveRecord_AssociationRelation) end def extending(*args, &block); end sig do params( of: T.nilable(Integer), start: T.nilable(Integer), finish: T.nilable(Integer), load: T.nilable(T::Boolean), error_on_ignore: T.nilable(T::Boolean), block: T.nilable(T.proc.params(e: ActsAsMessageable::Message::ActiveRecord_AssociationRelation).void) ).returns(ActiveRecord::Batches::BatchEnumerator) end def in_batches(of: 1000, start: nil, finish: nil, load: false, error_on_ignore: nil, &block); end end