anchor.diff:       private
        public :: Box, printBox, setBoxLength, setBoxHeight, setBoxBreadth, destructBox
        ! Using an implicit constructor
  -     type Box
  +     type :: Box
            real, allocatable :: length
            real, allocatable :: breadth
            real, allocatable :: height
  +         procedure,nopass,non_overridable :: SetHight => setBoxHeight
        end type Box
   contains
        subroutine printBox(this)
  
positive.code:      call printBox(my_box)
       call destructBox(my_box)
  
  end program box_test
  
negative.code:      end subroutine destructBox
  end module boxClass
  
  module colourBoxClass 
      use boxClass
      implicit none
      private
      public :: colourBox, printColourBox, setBoxLength, setBoxHeight, setBoxBreadth, destructBox
      type, extends(Box) :: colourBox
          character (len=20), allocatable :: colour
      end type colourBox
  contains
      subroutine setColour(this, newColour)
          type(colourBox) :: this
          character (*), intent(in) :: newColour
          this%colour = newColour
      end subroutine setColour
      subroutine printColourBox(this)
          type(colourBox), intent(in) :: this
          real :: volume
          volume = this%box%length * this%box%breadth * this%box%height
          print *, 'This ', this%colour , ' box has a volume of ', volume
      end subroutine printColourBox
  end module colourBoxClass
  
  program box_test
       use boxClass
       use colourBoxClass
       implicit none
  
       type(Box) :: my_box
       type(colourBox) :: my_colour_box
  
       my_box = Box(2,3,4)
       call printBox(my_box)
       call setBoxLength(my_box, 5.0)
  