diff --git a/inc/Gtfs/Stop/LocationType.php b/inc/Gtfs/Stop/LocationType.php
new file mode 100644
index 0000000..204d537
--- /dev/null
+++ b/inc/Gtfs/Stop/LocationType.php
@@ -0,0 +1,76 @@
+<?php
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: proto/gtfs.proto
+
+namespace Gtfs\Stop;
+
+use UnexpectedValueException;
+
+/**
+ * Protobuf type <code>gtfs.Stop.LocationType</code>
+ */
+class LocationType
+{
+    /**
+     * Stop (or Platform). A location where passengers board or disembark from a transit vehicle. Is called a platform when defined within a parent_station.
+     *
+     * Generated from protobuf enum <code>STOP = 0;</code>
+     */
+    const STOP = 0;
+    /**
+     * Station. A physical structure or area that contains one or more platform.
+     *
+     * Generated from protobuf enum <code>STATION = 1;</code>
+     */
+    const STATION = 1;
+    /**
+     * Entrance/Exit. A location where passengers can enter or exit a station from the street. If an entrance/exit belongs to multiple stations, it can be linked by pathways to both, but the data provider must pick one of them as parent.
+     *
+     * Generated from protobuf enum <code>ENTRANCE = 2;</code>
+     */
+    const ENTRANCE = 2;
+    /**
+     * Generic Node. A location within a station, not matching any other location_type, which can be used to link together pathways define in pathways.txt.
+     *
+     * Generated from protobuf enum <code>GENERIC_NODE = 3;</code>
+     */
+    const GENERIC_NODE = 3;
+    /**
+     * Boarding Area. A specific location on a platform, where passengers can board and/or alight vehicles.
+     *
+     * Generated from protobuf enum <code>BOARDING_AREA = 4;</code>
+     */
+    const BOARDING_AREA = 4;
+
+    private static $valueToName = [
+        self::STOP => 'STOP',
+        self::STATION => 'STATION',
+        self::ENTRANCE => 'ENTRANCE',
+        self::GENERIC_NODE => 'GENERIC_NODE',
+        self::BOARDING_AREA => 'BOARDING_AREA',
+    ];
+
+    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(LocationType::class, \Gtfs\Stop_LocationType::class);
+
