class Steep::TypeInference::MethodCall::Base

def ==(other)

def ==(other)
  other.is_a?(Base) &&
    other.node == node &&
    other.context == context &&
    other.method_name == method_name &&
    other.return_type == return_type &&
    other.receiver_type == receiver_type
end

def hash

def hash
  node.hash ^ context.hash ^ method_name.hash ^ return_type.hash ^ receiver_type.hash
end

def initialize(node:, context:, method_name:, receiver_type:, return_type:)

def initialize(node:, context:, method_name:, receiver_type:, return_type:)
  @node = node
  @context = context
  @method_name = method_name
  @receiver_type = receiver_type
  @return_type = return_type
end

def with_return_type(new_type)

def with_return_type(new_type)
  dup.tap do |copy|
    copy.instance_eval do
      @return_type = new_type
    end
  end
end