class A def initialize(x) @int = 1 @str = "str" @val = x end end def log(x) end log A.new(1) A.new("str") A.new(nil) __END__ # Classes class Object private def log: (A x) -> nil end class A @int: Integer @str: String @val: (Integer | String)? def initialize: ((Integer | String)? x) -> ((Integer | String)?) end