I'm dealing with the MessageArchiver of GLORP which is a subclass of ProtoObject and handles the "transparent" creation of expressions vÃa a DNU resolution. The problem I'm facing is that the EyeInspector expects the value in its value holder to respond to #basicSize, and because MessageArchiver inherits from ProtoObject it doesn't understand it. The problem is here: EyeInspector>>#variableFieldsToShow "Answers the indexes of the variable fields of the object to show. Shorten the list for very long collection (cf limit1 and limit2)" |bSize| bSize := self objectVariableSize. ^ bSize <= (self limit1 + self limit2) ifTrue: [1 to: bSize] ifFalse: [(1 to: self limit1) , (bSize - self limit2 + 1 to: bSize)]. If I implement #basicSize in MessageArchiver things go bananas. If I doesn't, and because #objectVariableSize is sent to MessageAchiver "proxy", bSize ends up with an instance of the MessageArchiver instead of an integer. I implemented #inspectorClass in MessageArchiver class to return EyeBasicInspector, but it is the same. Question: Is it documented what I should define/override in my classes to support EyeInspector? Regards, Esteban A. Maringolo pd: Stack trace =========== UndefinedObject(Object)>>error: MessageArchiver>>mustBeBoolean EyeBasicInspector(EyeInspector)>>variableFieldsToShow EyeBasicInspector(EyeInspector)>>addVariableFields: EyeBasicInspector(EyeInspector)>>generateElements EyeBasicInspector(EyeInspector)>>updateList EyeBasicInspector(EyeInspector)>>objectChanged [ self objectChanged ] in EyeBasicInspector(EyeAbstractInspector)>>initializePresenter in Block: [ self objectChanged ] BlockClosure>>cull: BlockClosure>>cull:cull: BlockClosure>>cull:cull:cull: BlockClosure>>cull:cull:cull:cull: