Fix nanopb_generator exception on enums with aliases (#535)

diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 6f9a267..ae16064 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -176,6 +176,11 @@
     def __eq__(self, other):
         return isinstance(other, Names) and self.parts == other.parts
 
+    def __lt__(self, other):
+        if not isinstance(other, Names):
+            return NotImplemented
+        return str(self) < str(other)
+
 def names_from_type_name(type_name):
     '''Parse Names() from FieldDescriptorProto type_name'''
     if type_name[0] != '.':
diff --git a/tests/regression/issue_535/SConscript b/tests/regression/issue_535/SConscript
new file mode 100644
index 0000000..e354672
--- /dev/null
+++ b/tests/regression/issue_535/SConscript
@@ -0,0 +1,6 @@
+# Regression test for #535:
+# Generator crash on enums with aliases
+
+Import("env")
+env.NanopbProto("issue_535")
+env.Object("issue_535.pb.c")
diff --git a/tests/regression/issue_535/issue_535.proto b/tests/regression/issue_535/issue_535.proto
new file mode 100644
index 0000000..29dee5f
--- /dev/null
+++ b/tests/regression/issue_535/issue_535.proto
@@ -0,0 +1,10 @@
+/* Test generation of enums with aliases */
+
+syntax = "proto3";
+
+enum EnumWithAliases {
+  option allow_alias = true;
+  First = 0;
+  Second = 1;
+  AlsoSecond = 1;
+}