I've been reading this article on the difference between include & extend in ruby.
If I have this module, I understand how the first and second methods of the module will be used in the class. What I don't understand is how the class << self will be used by include or extend.
module Direction
  def straight
    puts "going straight!"
  end
  def turn
    puts "turning!"
  end
  class << self
    def stop
      puts "stopping!"
    end
  end
end
# This will work because `include` brings them in as instance methods
class Car
  include Direction
end
Car.new.straight
Car.new.turn
# ---------------------
# Now this will also work because `extend` brings them in as class methods
class Car
  extend Direction
end
Car.straight
Car.turn
# ---------------------
Now, the issue is, doing Car.stop or Car.new.stop will always result in an error:
/Users/<name>/Projects/ruby-testing/main.rb:34:in `<main>': undefined method `stop' for Car:Class (NoMethodError)
Why are class methods not carried over via include and extend? 
I started thinking about this because of my research into the [forwardable source code at line 119].(https://github.com/ruby/ruby/blob/master/lib/forwardable.rb#L119)
Thank you for any help you may have!
Update from Answer Below
The following was an example given:
module Direction
  def self.included(base)
    base.extend(ClassMethods)
  end
  module ClassMethods
    def stop
      puts 'stopping!'
    end
  end
  def straight
    puts "going straight!"
  end
  def turn
    puts "turning!"
  end
end
class Car
  include Direction
end
This I understand now, and I understand how I can implement class methods from a module into a class using def self.included(base). My question is, if we used extend inside of Car instead of include, would we still be able to get at those class methods using def self.included(base)?
 
    