diff --git a/inc/Gtfs/Stop/WheelchairBoarding.php b/inc/Gtfs/Stop/WheelchairBoarding.php
new file mode 100644
index 0000000..460a6dc
--- /dev/null
+++ b/inc/Gtfs/Stop/WheelchairBoarding.php
@@ -0,0 +1,62 @@
+<?php
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: proto/gtfs.proto
+
+namespace Gtfs\Stop;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>gtfs.Stop.WheelchairBoarding</code>
+ */
+class WheelchairBoarding
+{
+    /**
+     * no accessibility information for the stop
+     *
+     * Generated from protobuf enum <code>UNKNOWN = 0;</code>
+     */
+    const UNKNOWN = 0;
+    /**
+     * some vehicles at this stop can be boarded by a rider in a wheelchair
+     *
+     * Generated from protobuf enum <code>ACCESSIBLE = 1;</code>
+     */
+    const ACCESSIBLE = 1;
+    /**
+     * wheelchair boarding is not possible at this stop
+     *
+     * Generated from protobuf enum <code>NOT_ACCESSIBLE = 2;</code>
+     */
+    const NOT_ACCESSIBLE = 2;
+
+    private static $valueToName = [
+        self::UNKNOWN => 'UNKNOWN',
+        self::ACCESSIBLE => 'ACCESSIBLE',
+        self::NOT_ACCESSIBLE => 'NOT_ACCESSIBLE',
+    ];
+
+    public static function name($value)
+    {
+        if (!isset(self::$valueToName[$value])) {
+            throw new UnexpectedValueException(sprintf(
+                    'Enum %s has no name defined for value %s', __CLASS__, $value));
+        }
+        return self::$valueToName[$value];
+    }
+
+
+    public static function value($name)
+    {
+        $const = __CLASS__ . '::' . strtoupper($name);
+        if (!defined($const)) {
+            throw new UnexpectedValueException(sprintf(
+                    'Enum %s has no value defined for name %s', __CLASS__, $name));
+        }
+        return constant($const);
+    }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(WheelchairBoarding::class, \Gtfs\Stop_WheelchairBoarding::class);
+
