def __call__(self,_Class):

		#debug
		'''
		print('Defaultor l.31 __call__ method')
		print('_Class is ',_Class)
		print('')
		'''

		#Call the parent init method
		BaseClass.__call__(self,_Class)

		#debug
		'''
		print('Defaultor l.47 look for an __init__ method')
		print('_Class is ',_Class)
		print('')
		'''

		#Check
		if hasattr(_Class,"__init__"):

			#debug
			'''
			print('It has an __init__ method')
			print('')
			'''

			#get
			InitWrapUnboundMethod=getattr(_Class,DefaultWrapMethodStr) if hasattr(_Class,DefaultWrapMethodStr) else DefaultInitFunction

			#set the DefaultDict
			_Class.InitInspectDict=SYS.InspectDict(InitWrapUnboundMethod)

			#Definition the DefaultAttributeItemTuplesList
			DefaultAttributeItemTuplesList=map(
					lambda __DefaultSetItemTuple:
					(
						DefaultPrefixStr.join(
						__DefaultSetItemTuple[0].split(DefaultPrefixStr)[1:]
						),
						getDefaultedValueVariableWithSetVariable(
								__DefaultSetItemTuple[1]
							)
					),
					SYS._filter(
								lambda __DefaultItemTuple:
								__DefaultItemTuple[0].startswith(DefaultPrefixStr),
								_Class.InitInspectDict['DefaultOrderedDict'].items()
							)
			)

			#set
			_Class.DefaultAttributeVariablesOrderedDict=collections.OrderedDict(
					DefaultAttributeItemTuplesList
				)

			#debug
			'''
			print('_Class.DefaultAttributeItemTuplesList is ',_Class.DefaultAttributeItemTuplesList)
			print('')
			'''

			#set at the level of the class
			map(	
					lambda __DefaultSetItemTuple:
					setattr(_Class,*__DefaultSetItemTuple),
					_Class.DefaultAttributeVariablesOrderedDict.items()
				)

			#set the DefaultSpecificKeyStrsList
			_Class.DefaultSpecificKeyStrsList=_Class.DefaultAttributeVariablesOrderedDict.keys()

			#Get the BaseKeyStrsList
			_Class.DefaultBaseKeyStrsList=list(
								SYS.collect(
											_Class,
											'__bases__',
											'DefaultSpecificKeyStrsList'
								)
			)
			
			#Debug
			'''
			print("l 269 Defaultor")
			print("DefaultDecorationMethodStr is ",DefaultDecorationMethodStr)
			print("")
			'''

			#Define the decorated function
			InitExecStr="def "+DefaultDecorationMethodStr+"(_InstanceVariable,"
			InitExecStr+="*_LiargVariablesList,"
			InitExecStr+="**_KwargVariablesDict):\n\t"
			InitExecStr+="initDefault(_InstanceVariable,"
			InitExecStr+="*_LiargVariablesList,"
			InitExecStr+="**dict(_KwargVariablesDict,**{'DefaultWrapMethodStr':'"+DefaultWrapMethodStr+"','DefaultClassStr':'"+_Class.__name__+"'}))\n"
		
			#debug
			'''
			print('Defaultor l 280')
			print('InitExecStr is ')
			print(InitExecStr)
			print('')
			'''
			
			#exec
			six.exec_(InitExecStr)

			#set with the specific name
			setattr(
						_Class,
						DefaultDecorationMethodStr,
						locals()[DefaultDecorationMethodStr]
					)

			#set with the DoMethodStr shortcut
			setattr(
						_Class,
						"__init__",
						locals()[DefaultDecorationMethodStr]
					)

			#set in the class fi not already 
			if hasattr(_Class,'setDefault')==False:

				#set setDefault
				setattr(
							_Class,
							setDefault.__name__,
							setDefault
						)
				
				#set setDefaultMutable
				setattr(
							_Class,
							setDefaultMutable.__name__,
							setDefaultMutable
						)

			#Add to the KeyStrsList
			_Class.KeyStrsList+=[
										#'DefaultAttributeItemTuplesList',
										'DefaultAttributeVariablesOrderedDict',
										'InitInspectDict',
										'DefaultBaseKeyStrsList',
										'DefaultSpecificKeyStrsList'
								]
		#Return 
		return _Class
	def do_represent(self):

		#alias
		RepresentedClass=self.DoClass

		#debug
		'''
		print('Representer l.352 : RepresentedClass is ',RepresentedClass)
		print('')
		'''

		#Check
		'''
		if hasattr(RepresentedClass,'RepresentingKeyStrsList')==False or (
			len(RepresentedClass.__bases__)>0 and hasattr(RepresentedClass.__bases__[0
			],'RepresentingKeyStrsList') and RepresentedClass.__bases__[0
			].RepresentingKeyStrsList==RepresentedClass.RepresentingKeyStrsList):
			
			#init
			RepresentedClass.RepresentingKeyStrsList=[]
		'''

		RepresentedClass.RepresentingKeyStrsList=RepresentedClass.DefaultSetKeyStrsList

		#init
		#RepresentedClass.RepresentingSkipKeyStrsList=None

		#init
		#RepresentedClass.RepresentingForceKeyStrsList=None

		#set the BaseKeyStrsList
		KeyStrsSet=set(
			SYS.collect(
					RepresentedClass,
					'__bases__',
					'RepresentingKeyStrsList'
					)
			)
		#KeyStrsSet.difference_update(set(RepresentedClass.RepresentingKeyStrsList))
		RepresentedClass.RepresentedBaseKeyStrsList=list(KeyStrsSet)

		#Split between the one from the class or not
		[
			RepresentedClass.RepresentedSpecificKeyStrsList,
			RepresentedClass.RepresentedNotSpecificKeyStrsList
		]=SYS.groupby(
			lambda __KeyStr:
			__KeyStr not in RepresentedClass.RepresentedBaseKeyStrsList,
			RepresentedClass.RepresentingKeyStrsList
		)

		#debug
		'''
		print(
				RepresentedClass.__name__,
				#Class.__mro__,
				#Class.RepresentedNotGettingStrsList,
				list(RepresentedClass.RepresentedBasedKeyStrsList)
				)
		'''	

		#Add to the KeyStrsList
		RepresentedClass.KeyStrsList+=[
									'RepresentingKeyStrsList',
									'RepresentingSkipKeyStrsList',
									'RepresentingForceKeyStrsList',
									'RepresentedBaseKeyStrsList',
									'RepresentedSpecificKeyStrsList',
									'RepresentedNotSpecificKeyStrsList',
								]

		"""