def field(self, name):
        """
        Returns the field on this struct with the given name. Will try to find this 
        name on all ancestors if this struct extends another.

        If found, returns a dict with keys: 'name', 'comment', 'type', 'is_array'
        If not found, returns None

        :Parameters:
          name
            string name of field to lookup
        """
        if self.fields.has_key(name):
            return self.fields[name]
        elif self.extends:
            if not self.parent:
                self.parent = self.contract.struct(self.extends)
            return self.parent.field(name)
        else:
            return None