-- CompVB
Option Explicit
Option Strict

Imports System

Namespace CompVB

 Public Class Top
 End Class
 Public Class Middle
  Inherits Top
 End Class
 Public Class Bottom
  Inherits Middle
 End Class

 Public Class Up

 Public Sub cv(ByVal t as Top)
        Console.WriteLine ("cv(Top) in Up using Visual Basic!")
  End Sub

 Public Sub ctv(ByVal t as Bottom)
        Console.WriteLine ("ctv(Bottom) in Up using Visual Basic!")
  End Sub

 End Class

End Namespace

-- ClientVBVB
Option Explicit
Option Strict

Imports System
Imports System.Collections

Imports CompVB

Public Module modmain

 Public Class Down
  Inherits Up
 Overloads Public Sub cv(ByVal t as Middle)
        Console.WriteLine ("cv(Middle) in Down using Visual Basic!")
  End Sub

 Overloads Public Sub ctv(ByVal t as Middle)
        Console.WriteLine ("ctv(Middle) in Down using Visual Basic!")
  End Sub

 End Class

'The main entry point for the application
 Sub Main()

  Dim d As Down
  Console.WriteLine("-- Calls VB from VB --")

  Dim u As Up
  Dim ud As Up

  d = New Down
  u = New Up
  ud = New Down

  u.cv(New Top)
  u.cv(New Middle)
  u.cv(New Bottom)
  'u.ctv(New Top)
  Console.WriteLine("Compilation error")
  'u.ctv(New Middle)
  Console.WriteLine("Compilation error")
  u.ctv(New Bottom)
  Console.WriteLine(" Down d")
  d.cv(New Top)
  d.cv(New Middle)
  d.cv(New Bottom)
  'd.ctv(New Top)
  Console.WriteLine("Compilation error")
  d.ctv(New Middle)
  d.ctv(New Bottom)
  Console.WriteLine(" Up ud")
  ud.cv(New Top)
  ud.cv(New Middle)
  ud.cv(New Bottom)
  'ud.ctv(New Top)
  Console.WriteLine("Compilation error")
  'ud.ctv(New Middle)
  Console.WriteLine("Compilation error")
  ud.ctv(New Bottom)

 End Sub

End Module

-- Calls VB from VB --
cv(Top) in Up using Visual Basic!
cv(Top) in Up using Visual Basic!
cv(Top) in Up using Visual Basic!
Compilation error
Compilation error
ctv(Bottom) in Up using Visual Basic!
 Down d
cv(Top) in Up using Visual Basic!
cv(Middle) in Down using Visual Basic!
cv(Middle) in Down using Visual Basic!
Compilation error
ctv(Middle) in Down using Visual Basic!
ctv(Bottom) in Up using Visual Basic!
 Up ud
cv(Top) in Up using Visual Basic!
cv(Top) in Up using Visual Basic!
cv(Top) in Up using Visual Basic!
Compilation error
Compilation error
ctv(Bottom) in Up using Visual Basic!