def get_field_descriptor(self, class_name, field_name, descriptor):
        """
        Return the specific field

        :param class_name: the class name of the field
        :type class_name: string
        :param field_name: the name of the field
        :type field_name: string
        :param descriptor: the descriptor of the field
        :type descriptor: string

        :rtype: None or a :class:`EncodedField` object
        """

        key = class_name + field_name + descriptor

        if self.__cache_fields is None:
            self.__cache_fields = {}
            for i in self.get_classes():
                for j in i.get_fields():
                    self.__cache_fields[j.get_class_name() + j.get_name() +
                                        j.get_descriptor()] = j

        return self.__cache_fields.get(key)