specs: Handle overloaded methods/functions.
diff --git a/specs/stdapi.py b/specs/stdapi.py
index c72c264..de0cc93 100644
--- a/specs/stdapi.py
+++ b/specs/stdapi.py
@@ -26,6 +26,8 @@
 """C basic types"""
 
 
+import sys
+
 import debug
 
 
@@ -372,7 +374,7 @@
 
 class Function:
 
-    def __init__(self, type, name, args, call = '', fail = None, sideeffects=True, internal=False):
+    def __init__(self, type, name, args, call = '', fail = None, sideeffects=True, internal=False, overloaded=False):
         self.type = type
         self.name = name
 
@@ -394,6 +396,7 @@
         self.fail = fail
         self.sideeffects = sideeffects
         self.internal = internal
+        self.overloaded = overloaded
 
     def prototype(self, name=None):
         if name is not None:
@@ -414,6 +417,17 @@
         s += ")"
         return s
 
+    def sigName(self):
+        name = self.name
+        if self.overloaded:
+            # suffix used to make overloaded functions/methods unique
+            suffix = ','.join([str(arg.type) for arg in self.args])
+            suffix = suffix.replace(' *', '*')
+            suffix = suffix.replace(' &', '&')
+            suffix = '(' + suffix + ')'
+            name += suffix
+        return name
+
     def argNames(self):
         return [arg.name for arg in self.args]
 
@@ -489,9 +503,9 @@
 
 class Method(Function):
 
-    def __init__(self, type, name, args, call = '', const=False, sideeffects=True):
+    def __init__(self, type, name, args, call = '', const=False, sideeffects=True, overloaded=False):
         assert call == '__stdcall'
-        Function.__init__(self, type, name, args, call = call, sideeffects=sideeffects)
+        Function.__init__(self, type, name, args, call = call, sideeffects=sideeffects, overloaded=overloaded)
         for index in range(len(self.args)):
             self.args[index].index = index + 1
         self.const = const
@@ -792,7 +806,7 @@
 
     def visitReference(self, reference):
         # Strip out references
-        return reference.type
+        return self.visit(reference.type)
 
 
 class Traverser(Visitor):