class Steep::Interface::Block

def +(other)

def +(other)
  optional = self.optional? || other.optional?
  type = Function.new(
    params: self.type.params + other.type.params,
    return_type: AST::Types::Union.build(types: [self.type.return_type, other.type.return_type]),
    location: nil
  )
  self_types = [self.self_type, other.self_type].compact
  self.class.new(
    type: type,
    optional: optional,
    self_type:
      unless self_types.empty?
        AST::Types::Union.build(types: self_types)
      end
  )
end