Object.st
branchjv
changeset 18011 deb0c3355881
parent 17993 956342c369a2
parent 14661 2a5c79daa934
child 18017 7fef9e17913f
--- a/Object.st	Thu Dec 20 11:48:59 2012 +0000
+++ b/Object.st	Sat Jan 19 01:30:00 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -33,7 +33,7 @@
 copyright
 "
  COPYRIGHT (c) 1988 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -117,52 +117,52 @@
 
    [Class variables:]
 
-        ErrorSignal     <Signal>        Signal raised for error/error: messages
-                                        also, parent of all other signals.
-
-        HaltSignal      <Signal>        Signal raised for halt/halt: messages
-
-        MessageNotUnderstoodSignal      Signals raised for various error conditions
-        UserInterruptSignal
-        RecursionInterruptSignal
-        ExceptionInterruptSignal
-        SubscriptOutOfBoundsSignal
-        NonIntegerIndexSignal
-        NotFoundSignal
-        KeyNotFoundSignal
-        ElementOutOfBoundsSignal
-        InformationSignal
-        WarningSignal
-        DeepCopyErrorSignal
-        InternalErrorSignal
-
-        AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
-                                        BUT, the debugger will only raise it if it is handled.
-                                        By handling the abortSignal, you can control where the
-                                        debuggers abort-function resumes execution in case of
-                                        an error.
-
-        ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
-                                        an error while handling an error).
-
-        Dependencies     <WeakDependencyDictionary>
-                                        keeps track of object dependencies.
-
-        InfoPrinting     <Boolean>      controls weather informational messages
-                                        are printed.
-
-        ActivityNotificationSignal <QuerySignal>
-                                         raised on #activityNotification:
-
-        NonWeakDependencies <Dictionary> keeps track of object dependencies.
-                                         Dependents stay alive.
-
-        SynchronizationSemaphores <WeakIdentityDictionary>
-                                         Semaphores for per-object-monitor.
+	ErrorSignal     <Signal>        Signal raised for error/error: messages
+					also, parent of all other signals.
+
+	HaltSignal      <Signal>        Signal raised for halt/halt: messages
+
+	MessageNotUnderstoodSignal      Signals raised for various error conditions
+	UserInterruptSignal
+	RecursionInterruptSignal
+	ExceptionInterruptSignal
+	SubscriptOutOfBoundsSignal
+	NonIntegerIndexSignal
+	NotFoundSignal
+	KeyNotFoundSignal
+	ElementOutOfBoundsSignal
+	InformationSignal
+	WarningSignal
+	DeepCopyErrorSignal
+	InternalErrorSignal
+
+	AbortSignal      <Signal>       Signal raised by debugger, to abort a computation
+					BUT, the debugger will only raise it if it is handled.
+					By handling the abortSignal, you can control where the
+					debuggers abort-function resumes execution in case of
+					an error.
+
+	ErrorRecursion   <Boolean>      controls behavior when recursive errors occur (i.e.
+					an error while handling an error).
+
+	Dependencies     <WeakDependencyDictionary>
+					keeps track of object dependencies.
+
+	InfoPrinting     <Boolean>      controls weather informational messages
+					are printed.
+
+	ActivityNotificationSignal <QuerySignal>
+					 raised on #activityNotification:
+
+	NonWeakDependencies <Dictionary> keeps track of object dependencies.
+					 Dependents stay alive.
+
+	SynchronizationSemaphores <WeakIdentityDictionary>
+					 Semaphores for per-object-monitor.
 
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 
 "
 ! !
@@ -236,23 +236,23 @@
     "called only once - initialize signals"
 
     ErrorSignal isNil ifTrue:[
-        self initSignals
+	self initSignals
     ].
 
     ObjectAttributes isNil ifTrue:[
-        ObjectAttributes := WeakIdentityDictionary new.
+	ObjectAttributes := WeakIdentityDictionary new.
     ].
     Dependencies isNil ifTrue:[
-        Dependencies := WeakDependencyDictionary new.
+	Dependencies := WeakDependencyDictionary new.
     ].
     NonWeakDependencies isNil ifTrue:[
-        NonWeakDependencies := IdentityDictionary new.
+	NonWeakDependencies := IdentityDictionary new.
     ].
     SynchronizationSemaphores isNil ifTrue:[
-        SynchronizationSemaphores := WeakIdentityDictionary new.
+	SynchronizationSemaphores := WeakIdentityDictionary new.
     ].
     FinalizationLobby isNil ifTrue:[
-        FinalizationLobby := Registry new.
+	FinalizationLobby := Registry new.
     ].
 
     "/ initialize InfoPrinting to the VM's infoPrint setting
@@ -432,13 +432,13 @@
 
     "
      RecursiveStoreError handle:[:ex |
-        self halt
+	self halt
      ] do:[
-        |a|
-
-        a := Array new:1.
-        a at:1 put:a.
-        a storeOn:Transcript
+	|a|
+
+	a := Array new:1.
+	a at:1 put:a.
+	a storeOn:Transcript
      ]
     "
 
@@ -504,6 +504,7 @@
     InfoPrinting := aBoolean
 ! !
 
+
 !Object class methodsFor:'queries'!
 
 isAbstract
@@ -525,6 +526,9 @@
     "Modified: 23.4.1996 / 16:00:07 / cg"
 ! !
 
+
+
+
 !Object methodsFor:'Compatibility-Dolphin'!
 
 stbFixup: anSTBInFiler at: newObjectIndex
@@ -612,7 +616,7 @@
 explore
     (self confirm:'The Squeak explorer has not yet been ported to ST/X\\Inspect instead ?' withCRs)
     ifTrue:[
-        self inspect
+	self inspect
     ]
 !
 
@@ -629,13 +633,13 @@
 !
 
 stringForReadout
-        ^ self stringRepresentation
+	^ self stringRepresentation
 !
 
 stringRepresentation
-        "Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
-
-        ^ self printString
+	"Answer a string that represents the receiver.  For most objects this is simply its printString, but for strings themselves, it's themselves.  6/12/96 sw"
+
+	^ self printString
 !
 
 valueWithPossibleArguments:argArray
@@ -682,6 +686,7 @@
     "
 ! !
 
+
 !Object methodsFor:'accessing'!
 
 _at:index
@@ -689,9 +694,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-        v[n]
+	v[n]
      generates
-        v _at: n
+	v _at: n
     "
 
     ^ self at:index
@@ -704,9 +709,9 @@
      this is a synthetic selector, generated by the compiler,
      if a construct of the form expr[idx...] is parsed.
      I.e.
-        v[n]
+	v[n]
      generates
-        v _at: n
+	v _at: n
     "
 
     ^ self at:index put:value
@@ -748,239 +753,239 @@
      * and SmallInteger
      */
     if (__isSmallInteger(index)) {
-        myClass = __qClass(self);
-        indx = __intVal(index) - 1;
-        n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
-        nbytes = __qSize(self) - n /* nInstBytes */;
-        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-            case __MASKSMALLINT(POINTERARRAY):
-            case __MASKSMALLINT(WKPOINTERARRAY):
-                /*
-                 * pointers
-                 */
-                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-                    OBJ *op;
-
-                    op = (OBJ *)pFirst + indx;
-                    RETURN ( *op );
-                }
-                break;
-
-            case __MASKSMALLINT(BYTEARRAY):
-                /*
-                 * (unsigned) bytes
-                 */
-                if ((unsigned)indx < nbytes) {
-                    unsigned char *cp;
-
-                    cp = (unsigned char *)pFirst + indx;
-                    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
-                }
-                break;
-
-            case __MASKSMALLINT(FLOATARRAY):
-                /*
-                 * native floats
-                 */
-                if ((unsigned)indx < (nbytes / sizeof(float))) {
-                    float *fp;
-                    float f;
-                    OBJ v;
-
-                    fp = (float *)pFirst + indx;
-                    f = *fp;
-                    if (f == 0.0) {
-                        v = __float0;
-                    } else {
-                        __qMKSFLOAT(v, f);
-                    }
-                    RETURN (v);
-                }
-                break;
-
-            case __MASKSMALLINT(DOUBLEARRAY):
-                /*
-                 * native doubles
-                 */
+	myClass = __qClass(self);
+	indx = __intVal(index) - 1;
+	n /* nInstVars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* nInstVars */);
+	nbytes = __qSize(self) - n /* nInstBytes */;
+	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+	    case __MASKSMALLINT(POINTERARRAY):
+	    case __MASKSMALLINT(WKPOINTERARRAY):
+		/*
+		 * pointers
+		 */
+		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+		    OBJ *op;
+
+		    op = (OBJ *)pFirst + indx;
+		    RETURN ( *op );
+		}
+		break;
+
+	    case __MASKSMALLINT(BYTEARRAY):
+		/*
+		 * (unsigned) bytes
+		 */
+		if ((unsigned)indx < nbytes) {
+		    unsigned char *cp;
+
+		    cp = (unsigned char *)pFirst + indx;
+		    RETURN ( __mkSmallInteger( (*cp & 0xFF)) );
+		}
+		break;
+
+	    case __MASKSMALLINT(FLOATARRAY):
+		/*
+		 * native floats
+		 */
+		if ((unsigned)indx < (nbytes / sizeof(float))) {
+		    float *fp;
+		    float f;
+		    OBJ v;
+
+		    fp = (float *)pFirst + indx;
+		    f = *fp;
+		    if (f == 0.0) {
+			v = __float0;
+		    } else {
+			__qMKSFLOAT(v, f);
+		    }
+		    RETURN (v);
+		}
+		break;
+
+	    case __MASKSMALLINT(DOUBLEARRAY):
+		/*
+		 * native doubles
+		 */
 #ifdef __NEED_DOUBLE_ALIGN
-                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes / sizeof(double))) {
-                    double *dp;
-                    double d;
-                    OBJ v;
-
-                    dp = (double *)pFirst + indx;
-                    d = *dp;
-                    if (d == 0.0) {
-                        v = __float0;
-                    } else {
-                        __qMKFLOAT(v, d);
-                    }
-                    RETURN (v);
-                }
-                break;
-
-            case __MASKSMALLINT(WORDARRAY):
-                /*
-                 * unsigned 16bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the short-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>1)) {
-                    unsigned short *sp;
-
-                    sp = (unsigned short *)(pFirst + (indx<<1));
-                    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
-                }
-                break;
-
-            case __MASKSMALLINT(SWORDARRAY):
-                /*
-                 * signed 16bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the short-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>1)) {
-                    short *ssp;
-
-                    ssp = (short *)(pFirst + (indx<<1));
-                    RETURN ( __mkSmallInteger( (*ssp) ));
-                }
-                break;
-
-            case __MASKSMALLINT(LONGARRAY):
-                /*
-                 * unsigned 32bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the int-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>2)) {
-                    unsigned int32 ul;
-                    unsigned int32 *lp;
-
-                    lp = (unsigned int32 *)(pFirst + (indx<<2));
-                    ul = *lp;
+		if ((unsigned)indx < (nbytes / sizeof(double))) {
+		    double *dp;
+		    double d;
+		    OBJ v;
+
+		    dp = (double *)pFirst + indx;
+		    d = *dp;
+		    if (d == 0.0) {
+			v = __float0;
+		    } else {
+			__qMKFLOAT(v, d);
+		    }
+		    RETURN (v);
+		}
+		break;
+
+	    case __MASKSMALLINT(WORDARRAY):
+		/*
+		 * unsigned 16bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the short-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>1)) {
+		    unsigned short *sp;
+
+		    sp = (unsigned short *)(pFirst + (indx<<1));
+		    RETURN ( __mkSmallInteger( (*sp & 0xFFFF)) );
+		}
+		break;
+
+	    case __MASKSMALLINT(SWORDARRAY):
+		/*
+		 * signed 16bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the short-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>1)) {
+		    short *ssp;
+
+		    ssp = (short *)(pFirst + (indx<<1));
+		    RETURN ( __mkSmallInteger( (*ssp) ));
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGARRAY):
+		/*
+		 * unsigned 32bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the int-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>2)) {
+		    unsigned int32 ul;
+		    unsigned int32 *lp;
+
+		    lp = (unsigned int32 *)(pFirst + (indx<<2));
+		    ul = *lp;
 #if __POINTER_SIZE__ == 8
-                    {
-                        unsigned  INT ull = (unsigned INT)ul;
-                        RETURN ( __mkSmallInteger(ull) );
-                    }
+		    {
+			unsigned INT ull = (unsigned INT)ul;
+			RETURN ( __mkSmallInteger(ull) );
+		    }
 #else
-                    if (ul <= _MAX_INT) {
-                        RETURN ( __mkSmallInteger(ul) );
-                    }
-                    RETURN ( __MKULARGEINT(ul) );
+		    if (ul <= _MAX_INT) {
+			RETURN ( __mkSmallInteger(ul) );
+		    }
+		    RETURN ( __MKULARGEINT(ul) );
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGARRAY):
-                /*
-                 * signed 32bit ints
-                 */
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the int-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>2)) {
-                    int32 *slp;
-                    int32 l;
-
-                    slp = (int32 *)(pFirst + (indx<<2));
-                    l = *slp;
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGARRAY):
+		/*
+		 * signed 32bit ints
+		 */
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the int-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>2)) {
+		    int32 *slp;
+		    int32 l;
+
+		    slp = (int32 *)(pFirst + (indx<<2));
+		    l = *slp;
 #if __POINTER_SIZE__ == 8
-                    {
-                        INT ll = (INT)l;
-                        RETURN ( __mkSmallInteger(ll) );
-                    }
+		    {
+			INT ll = (INT)l;
+			RETURN ( __mkSmallInteger(ll) );
+		    }
 #else
-                    if (__ISVALIDINTEGER(l)) {
-                        RETURN ( __mkSmallInteger(l) );
-                    }
-                    RETURN ( __MKLARGEINT(l) );
+		    if (__ISVALIDINTEGER(l)) {
+			RETURN ( __mkSmallInteger(l) );
+		    }
+		    RETURN ( __MKLARGEINT(l) );
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGLONGARRAY):
-                /*
-                 * signed 64bit longlongs
-                 */
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGLONGARRAY):
+		/*
+		 * signed 64bit longlongs
+		 */
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the long/longlong-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>3)) {
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the long/longlong-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-                    INT *slp, ll;
-
-                    slp = (INT *)(pFirst + (indx<<3));
-                    ll = *slp;
-                    if (__ISVALIDINTEGER(ll)) {
-                        RETURN ( __mkSmallInteger(ll) );
-                    }
-                    RETURN ( __MKLARGEINT(ll) );
+		    INT *slp, ll;
+
+		    slp = (INT *)(pFirst + (indx<<3));
+		    ll = *slp;
+		    if (__ISVALIDINTEGER(ll)) {
+			RETURN ( __mkSmallInteger(ll) );
+		    }
+		    RETURN ( __MKLARGEINT(ll) );
 #else
-                    __int64__ *llp;
-
-                    llp = (__int64__ *)(pFirst + (indx<<3));
-                    RETURN (__MKINT64(llp));
+		    __int64__ *llp;
+
+		    llp = (__int64__ *)(pFirst + (indx<<3));
+		    RETURN (__MKINT64(llp));
 #endif
-                }
-                break;
-
-            case __MASKSMALLINT(LONGLONGARRAY):
-                /*
-                 * unsigned 64bit longlongs
-                 */
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGLONGARRAY):
+		/*
+		 * unsigned 64bit longlongs
+		 */
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                /* Notice: the hard coded shifts are by purpose;
-                 * it makes us independent of the long/longlong-size of the machine
-                 */
-                if ((unsigned)indx < (nbytes>>3)) {
+		/* Notice: the hard coded shifts are by purpose;
+		 * it makes us independent of the long/longlong-size of the machine
+		 */
+		if ((unsigned)indx < (nbytes>>3)) {
 #if __POINTER_SIZE__ == 8
-                    unsigned INT *ulp, ul;
-
-                    ulp = (unsigned INT *)(pFirst + (indx<<3));
-                    ul = *ulp;
-                    if (ul <= _MAX_INT) {
-                        RETURN ( __mkSmallInteger(ul) );
-                    }
-                    RETURN ( __MKULARGEINT(ul) );
+		    unsigned INT *ulp, ul;
+
+		    ulp = (unsigned INT *)(pFirst + (indx<<3));
+		    ul = *ulp;
+		    if (ul <= _MAX_INT) {
+			RETURN ( __mkSmallInteger(ul) );
+		    }
+		    RETURN ( __MKULARGEINT(ul) );
 #else
-                    __uint64__ *llp;
-
-                    llp = (__uint64__ *)(pFirst + (indx<<3));
-                    RETURN (__MKUINT64(llp));
+		    __uint64__ *llp;
+
+		    llp = (__uint64__ *)(pFirst + (indx<<3));
+		    RETURN (__MKUINT64(llp));
 #endif
-                }
-                break;
-        }
+		}
+		break;
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1008,246 +1013,280 @@
        and SmallInteger */
 
     if (__isSmallInteger(index)) {
-        indx = __intVal(index) - 1;
-        myClass = __qClass(self);
-        n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
-        nbytes = __qSize(self) - n /* nInstBytes */;
-        pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
-
-        switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-            case __MASKSMALLINT(POINTERARRAY):
-            case __MASKSMALLINT(WKPOINTERARRAY):
-                if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
-                    OBJ *op;
-
-                    op = (OBJ *)pFirst + indx;
-                    *op = anObject;
-                    __STORE(self, anObject);
-                    RETURN ( anObject );
-                }
-                break;
-
-            case __MASKSMALLINT(BYTEARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
-                        if ((unsigned)indx < nbytes) {
-                            char *cp;
-
-                            cp = pFirst + indx;
-                            *cp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(FLOATARRAY):
-                if ((unsigned)indx < (nbytes / sizeof(float))) {
-                    float *fp;
-
-                    fp = (float *)pFirst + indx;
-                    if (anObject != nil) {
-                        if (! __isSmallInteger(anObject)) {
-                            if (__qIsFloatLike(anObject)) {
-                                *fp = (float)(__floatVal(anObject));
-                                RETURN ( anObject );
-                            }
-                            if (__qIsShortFloat(anObject)) {
-                                *fp = __shortFloatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                        } else {
-                            *fp = (float) __intVal(anObject);
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(DOUBLEARRAY):
+	indx = __intVal(index) - 1;
+	myClass = __qClass(self);
+	n /* ninstvars */ = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	n /* nInstBytes */ = OHDR_SIZE + __OBJS2BYTES__(n /* ninstvars */);
+	nbytes = __qSize(self) - n /* nInstBytes */;
+	pFirst = (char *)(__InstPtr(self)) + n /* nInstBytes */;
+
+	switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+	    case __MASKSMALLINT(POINTERARRAY):
+	    case __MASKSMALLINT(WKPOINTERARRAY):
+		if ((unsigned)indx < (__BYTES2OBJS__(nbytes))) {
+		    OBJ *op;
+
+		    op = (OBJ *)pFirst + indx;
+		    *op = anObject;
+		    __STORE(self, anObject);
+		    RETURN ( anObject );
+		}
+		break;
+
+	    case __MASKSMALLINT(BYTEARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((val & ~0xFF) == 0 /* i.e. (val >= 0) && (val <= 255) */) {
+			if ((unsigned)indx < nbytes) {
+			    char *cp;
+
+			    cp = pFirst + indx;
+			    *cp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(FLOATARRAY):
+		if ((unsigned)indx < (nbytes / sizeof(float))) {
+		    float *fp;
+
+		    fp = (float *)pFirst + indx;
+		    if (anObject != nil) {
+			if (! __isSmallInteger(anObject)) {
+			    if (__qIsFloatLike(anObject)) {
+				*fp = (float)(__floatVal(anObject));
+				RETURN ( anObject );
+			    }
+			    if (__qIsShortFloat(anObject)) {
+				*fp = __shortFloatVal(anObject);
+				RETURN ( anObject );
+			    }
+			} else {
+			    *fp = (float) __intVal(anObject);
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-                if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+		    int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes / sizeof(double))) {
-                    double *dp;
-
-                    dp = (double *)pFirst + indx;
-                    if (anObject != nil) {
-                        if (! __isSmallInteger(anObject)) {
-                            if (__qIsFloatLike(anObject)) {
-                                *dp = __floatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                            if (__qIsShortFloat(anObject)) {
-                                *dp = (double)__shortFloatVal(anObject);
-                                RETURN ( anObject );
-                            }
-                        } else {
-                            *dp = (double) __intVal(anObject);
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(WORDARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((unsigned)val <= 0xFFFF) {
-                        if ((unsigned)indx < (nbytes>>1)) {
-                            unsigned short *sp;
-
-                            sp = (unsigned short *)(pFirst + (indx<<1));
-                            *sp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SWORDARRAY):
-                if (__isSmallInteger(anObject)) {
-                    val = __intVal(anObject);
-                    if ((val >= -32768) && (val < 32768)) {
-                        if ((unsigned)indx < (nbytes>>1)) {
-                            short *ssp;
-
-                            ssp = (short *)(pFirst + (indx<<1));
-                            *ssp = val;
-                            RETURN ( anObject );
-                        }
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGARRAY):
-                if ((unsigned)indx < (nbytes>>2)) {
-                    int32 *slp;
-
-                    slp = (int32 *)(pFirst + (indx<<2));
-                    if (__isSmallInteger(anObject)) {
-                        *slp = __intVal(anObject);
-                        RETURN ( anObject );
-                    }
-                    n = __signedLongIntVal(anObject);
-                    /*
-                     * zero means failure for an int larger than 4 bytes
-                     * (would be a smallInteger)
-                     */
-                    if (n) {
-                        *slp = n;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(LONGARRAY):
-                if ((unsigned)indx < (nbytes>>2)) {
-                    unsigned int32 *lp;
-
-                    lp = (unsigned int32 *)(pFirst + (indx<<2));
-                    if (anObject == __mkSmallInteger(0)) {
-                        *lp = 0;
-                        RETURN ( anObject );
-                    }
-                    u = __longIntVal(anObject);
-                    /*
-                     * zero means failure for an int larger than 4 bytes
-                     * (would be a smallInteger)
-                     */
-                    if (u) {
-                        *lp = u;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(SLONGLONGARRAY):
+		if ((unsigned)indx < (nbytes / sizeof(double))) {
+		    double *dp;
+
+		    dp = (double *)pFirst + indx;
+		    if (anObject != nil) {
+			if (! __isSmallInteger(anObject)) {
+			    if (__qIsFloatLike(anObject)) {
+				*dp = __floatVal(anObject);
+				RETURN ( anObject );
+			    }
+			    if (__qIsShortFloat(anObject)) {
+				*dp = (double)__shortFloatVal(anObject);
+				RETURN ( anObject );
+			    }
+			} else {
+			    *dp = (double) __intVal(anObject);
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(WORDARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((unsigned)val <= 0xFFFF) {
+			if ((unsigned)indx < (nbytes>>1)) {
+			    unsigned short *sp;
+
+			    sp = (unsigned short *)(pFirst + (indx<<1));
+			    *sp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SWORDARRAY):
+		if (__isSmallInteger(anObject)) {
+		    val = __intVal(anObject);
+		    if ((val >= -32768) && (val < 32768)) {
+			if ((unsigned)indx < (nbytes>>1)) {
+			    short *ssp;
+
+			    ssp = (short *)(pFirst + (indx<<1));
+			    *ssp = val;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGARRAY):
+		if ((unsigned)indx < (nbytes>>2)) {
+		    int32 *slp;
+
+		    slp = (int32 *)(pFirst + (indx<<2));
+		    if (__isSmallInteger(anObject)) {
+			*slp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    n = __signedLongIntVal(anObject);
+		    /*
+		     * zero means failure for an int larger than INT-size bytes
+		     * (would be a smallInteger)
+		     */
+		    if (n) {
+#if __POINTER_SIZE__ == 8
+			if ((n >= -0x80000000) && (n < 0x80000000))
+#endif
+			{
+			    *slp = n;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGARRAY):
+		if ((unsigned)indx < (nbytes>>2)) {
+		    unsigned int32 *lp;
+
+		    lp = (unsigned int32 *)(pFirst + (indx<<2));
+		    if (anObject == __mkSmallInteger(0)) {
+			*lp = 0;
+			RETURN ( anObject );
+		    }
+		    u = __longIntVal(anObject);
+		    /*
+		     * zero means failure for an int larger than 4 bytes
+		     * (would be a smallInteger)
+		     */
+		    if (u) {
+#if __POINTER_SIZE__ == 8
+			if (u <= 0xFFFFFFFF)
+#endif
+			{
+			    *lp = u;
+			    RETURN ( anObject );
+			}
+		    }
+		}
+		break;
+
+	    case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
+#endif
+		if ((unsigned)indx < (nbytes>>3)) {
+		    __int64__ ll;
+		    __int64__ *sllp;
+
+		    sllp = (__int64__ *)(pFirst + (indx<<3));
+
+#if __POINTER_SIZE__ == 8
+		    if (__isSmallInteger(anObject)) {
+			*sllp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    n = __signedLongIntVal(anObject);
+		    if (n) {
+			*sllp = n;
+			RETURN ( anObject );
+		    }
+#else
+		    if (anObject == __mkSmallInteger(0)) {
+			ll.lo = ll.hi = 0;
+			*sllp = ll;
+			RETURN ( anObject );
+		    }
+		    if (__signedLong64IntVal(anObject, &ll)) {
+			*sllp = ll;
+			RETURN ( anObject );
+		    }
 #endif
-                if ((unsigned)indx < (nbytes>>3)) {
-                    __int64__ ll;
-                    __int64__ *sllp;
-
-                    sllp = (__int64__ *)(pFirst + (indx<<3));
-
-                    if (anObject == __mkSmallInteger(0)) {
-                        ll.lo = ll.hi = 0;
-                        *sllp = ll;
-                        RETURN ( anObject );
-                    }
-                    if (__signedLong64IntVal(anObject, &ll)) {
-                        *sllp = ll;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-
-            case __MASKSMALLINT(LONGLONGARRAY):
+		}
+		break;
+
+	    case __MASKSMALLINT(LONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                    pFirst += delta;
-                    nbytes -= delta;
-                }
+		if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+		    int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+		    pFirst += delta;
+		    nbytes -= delta;
+		}
 #endif
-                if ((unsigned)indx < (nbytes>>3)) {
-                    __uint64__ ll;
-                    __uint64__ *llp;
-
-                    llp = (__uint64__ *)(pFirst + (indx<<3));
-                    if (anObject == __mkSmallInteger(0)) {
-                        ll.lo = ll.hi = 0;
-                        *llp = ll;
-                        RETURN ( anObject );
-                    }
-                    if (__unsignedLong64IntVal(anObject, &ll)) {
-                        *llp = ll;
-                        RETURN ( anObject );
-                    }
-                }
-                break;
-        }
+		if ((unsigned)indx < (nbytes>>3)) {
+		    __uint64__ ll;
+		    __uint64__ *llp;
+
+		    llp = (__uint64__ *)(pFirst + (indx<<3));
+#if __POINTER_SIZE__ == 8
+		    if (__isSmallInteger(anObject)) {
+			*llp = __intVal(anObject);
+			RETURN ( anObject );
+		    }
+		    ll = __longIntVal(anObject);
+		    if (ll) {
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+#else
+		    if (anObject == __mkSmallInteger(0)) {
+			ll.lo = ll.hi = 0;
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+		    if (__unsignedLong64IntVal(anObject, &ll)) {
+			*llp = ll;
+			RETURN ( anObject );
+		    }
+#endif
+		}
+		break;
+	}
     }
 %}.
     index isInteger ifFalse:[
-        "
-         the index should be an integer number
-        "
-        ^ self indexNotInteger:index
+	"
+	 the index should be an integer number
+	"
+	^ self indexNotInteger:index
     ].
     (index between:1 and:self size) ifFalse:[
-        "
-         the index is less than 1 or greater than the size of the
-         receiver collection
-        "
-        ^ self subscriptBoundsError:index
+	"
+	 the index is less than 1 or greater than the size of the
+	 receiver collection
+	"
+	^ self subscriptBoundsError:index
     ].
     (self class isFloatsOrDoubles) ifTrue:[
-        anObject isNumber ifTrue:[
-            ^ self basicAt:index put:(anObject asFloat)
-        ]
+	anObject isNumber ifTrue:[
+	    ^ self basicAt:index put:(anObject asFloat)
+	]
     ].
     anObject isInteger ifFalse:[
-        "
-         the object to put into the receiver collection
-         should be an integer number
-        "
-        ^ self elementNotInteger
+	"
+	 the object to put into the receiver collection
+	 should be an integer number
+	"
+	^ self elementNotInteger
     ].
     "
      the object to put into the receiver collection
@@ -1275,56 +1314,56 @@
     REGISTER OBJ cls;
 
     if (__isSmallInteger(index)) {
-        slf = self;
-        if (__isNonNilObject(slf)) {
-            unsigned char *pFirst;
-            int nIndex;
-
-            cls = __qClass(slf);
-
-            pFirst = __byteArrayVal(slf);
-            pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-            nIndex = __byteArraySize(slf);
-            indx = __intVal(index) - 1;
-
-            switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-                case __MASKSMALLINT(DOUBLEARRAY):
+	slf = self;
+	if (__isNonNilObject(slf)) {
+	    unsigned char *pFirst;
+	    int nIndex;
+
+	    cls = __qClass(slf);
+
+	    pFirst = __byteArrayVal(slf);
+	    pFirst += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+	    nIndex = __byteArraySize(slf);
+	    indx = __intVal(index) - 1;
+
+	    switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+		case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-                    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
-                        int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
-
-                        pFirst += delta;
-                        nIndex -= delta;
-                    }
+		    if ((INT)pFirst & (__DOUBLE_ALIGN-1)) {
+			int delta = __DOUBLE_ALIGN - ((INT)pFirst & (__DOUBLE_ALIGN-1));
+
+			pFirst += delta;
+			nIndex -= delta;
+		    }
 #endif
-                    /* fall into */
-                case __MASKSMALLINT(BYTEARRAY):
-                case __MASKSMALLINT(WORDARRAY):
-                case __MASKSMALLINT(LONGARRAY):
-                case __MASKSMALLINT(SWORDARRAY):
-                case __MASKSMALLINT(SLONGARRAY):
-                case __MASKSMALLINT(FLOATARRAY):
-                    if ((unsigned)indx < (unsigned)nIndex) {
-                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-                    }
-                    break;
-
-                case __MASKSMALLINT(LONGLONGARRAY):
-                case __MASKSMALLINT(SLONGLONGARRAY):
+		    /* fall into */
+		case __MASKSMALLINT(BYTEARRAY):
+		case __MASKSMALLINT(WORDARRAY):
+		case __MASKSMALLINT(LONGARRAY):
+		case __MASKSMALLINT(SWORDARRAY):
+		case __MASKSMALLINT(SLONGARRAY):
+		case __MASKSMALLINT(FLOATARRAY):
+		    if ((unsigned)indx < (unsigned)nIndex) {
+			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+		    }
+		    break;
+
+		case __MASKSMALLINT(LONGLONGARRAY):
+		case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-                    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
-                        int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
-
-                        pFirst += delta;
-                        nIndex -= delta;
-                    }
+		    if ((INT)pFirst & (__LONGLONG_ALIGN-1)) {
+			int delta = __LONGLONG_ALIGN - ((INT)pFirst & (__LONGLONG_ALIGN-1));
+
+			pFirst += delta;
+			nIndex -= delta;
+		    }
 #endif
-                    if ((unsigned)indx < (unsigned)nIndex) {
-                        RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
-                    }
-                    break;
-            }
-        }
+		    if ((unsigned)indx < (unsigned)nIndex) {
+			RETURN ( __mkSmallInteger( (INT)(pFirst[indx])) );
+		    }
+		    break;
+	    }
+	}
     }
 %}.
     "/ index not integer or index out of range
@@ -1357,33 +1396,33 @@
     REGISTER OBJ cls;
 
     if (__bothSmallInteger(index, byteValue)) {
-        val = __intVal(byteValue);
-        if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
-            slf = self;
-            if (__isNonNilObject(slf)) {
-                cls = __qClass(slf);
-
-                indx = __intVal(index) - 1;
-                switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-                    case __MASKSMALLINT(BYTEARRAY):
-                    case __MASKSMALLINT(WORDARRAY):
-                    case __MASKSMALLINT(LONGARRAY):
-                    case __MASKSMALLINT(SWORDARRAY):
-                    case __MASKSMALLINT(SLONGARRAY):
-                    case __MASKSMALLINT(LONGLONGARRAY):
-                    case __MASKSMALLINT(SLONGLONGARRAY):
-                    case __MASKSMALLINT(FLOATARRAY):
-                    case __MASKSMALLINT(DOUBLEARRAY):
-                        indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
-                        nIndex = __byteArraySize(slf);
-                        if ((unsigned)indx < (unsigned)nIndex) {
-                            __ByteArrayInstPtr(slf)->ba_element[indx] = val;
-                            RETURN ( byteValue );
-                        }
-                        break;
-                }
-            }
-        }
+	val = __intVal(byteValue);
+	if ((unsigned)(val) <= 0xFF /* i.e. (val >= 0) && (val <= 255) */) {
+	    slf = self;
+	    if (__isNonNilObject(slf)) {
+		cls = __qClass(slf);
+
+		indx = __intVal(index) - 1;
+		switch ((INT)(__ClassInstPtr(cls)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
+		    case __MASKSMALLINT(BYTEARRAY):
+		    case __MASKSMALLINT(WORDARRAY):
+		    case __MASKSMALLINT(LONGARRAY):
+		    case __MASKSMALLINT(SWORDARRAY):
+		    case __MASKSMALLINT(SLONGARRAY):
+		    case __MASKSMALLINT(LONGLONGARRAY):
+		    case __MASKSMALLINT(SLONGLONGARRAY):
+		    case __MASKSMALLINT(FLOATARRAY):
+		    case __MASKSMALLINT(DOUBLEARRAY):
+			indx += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
+			nIndex = __byteArraySize(slf);
+			if ((unsigned)indx < (unsigned)nIndex) {
+			    __ByteArrayInstPtr(slf)->ba_element[indx] = val;
+			    RETURN ( byteValue );
+			}
+			break;
+		}
+	    }
+	}
     }
 %}.
     "/ index not integer or index out of range
@@ -1408,22 +1447,22 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-        myClass = __Class(self);
-        idx = __intVal(index) - 1;
-        /*
-         * do not allow returning of non-object fields.
-         * if subclass did not make provisions for that,
-         * we won't do so here ...
-         */
-        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-            if (idx == 0) {
-                RETURN ( nil )
-            }
-        }
-        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        if ((idx >= 0) && (idx < ninstvars)) {
-            RETURN ( __InstPtr(self)->i_instvars[idx] );
-        }
+	myClass = __Class(self);
+	idx = __intVal(index) - 1;
+	/*
+	 * do not allow returning of non-object fields.
+	 * if subclass did not make provisions for that,
+	 * we won't do so here ...
+	 */
+	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+	    if (idx == 0) {
+		RETURN ( nil )
+	    }
+	}
+	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	if ((idx >= 0) && (idx < ninstvars)) {
+	    RETURN ( __InstPtr(self)->i_instvars[idx] );
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1440,24 +1479,24 @@
     int idx, ninstvars;
 
     if (__isSmallInteger(index)) {
-        myClass = __Class(self);
-        idx = __intVal(index) - 1;
-        ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
-        /*
-         * do not allow setting of non-object fields.
-         * if subclass did not make provisions for that,
-         * we won't do so here ...
-         */
-        if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
-            if (idx == 0) {
-                RETURN ( nil )
-            }
-        }
-        if ((idx >= 0) && (idx < ninstvars)) {
-            __InstPtr(self)->i_instvars[idx] = value;
-            __STORE(self, value);
-            RETURN ( value );
-        }
+	myClass = __Class(self);
+	idx = __intVal(index) - 1;
+	ninstvars = __intVal(__ClassInstPtr(myClass)->c_ninstvars);
+	/*
+	 * do not allow setting of non-object fields.
+	 * if subclass did not make provisions for that,
+	 * we won't do so here ...
+	 */
+	if (((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(NONOBJECT_INSTS))) {
+	    if (idx == 0) {
+		RETURN ( nil )
+	    }
+	}
+	if ((idx >= 0) && (idx < ninstvars)) {
+	    __InstPtr(self)->i_instvars[idx] = value;
+	    __STORE(self, value);
+	    RETURN ( value );
+	}
     }
 %}.
     ^ self indexNotIntegerOrOutOfBounds:index
@@ -1474,7 +1513,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-        ^ self errorKeyNotFound:name.
+	^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx.
 
@@ -1526,7 +1565,7 @@
 
     idx := self class instVarOffsetOf:name.
     idx isNil ifTrue:[
-        ^ self errorKeyNotFound:name.
+	^ self errorKeyNotFound:name.
     ].
     ^ self instVarAt:idx put:value.
 
@@ -1578,7 +1617,7 @@
 
     attrs := self objectAttributes.
     (attrs notNil and:[attrs size > 0]) ifTrue:[
-        ^ attrs at:attributeKey ifAbsent:[]
+	^ attrs at:attributeKey ifAbsent:[]
     ].
     ^ nil
 
@@ -1592,16 +1631,16 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads ...
     [
-        | attrs |
-
-        attrs := self objectAttributes.
-        (attrs isNil or:[attrs size == 0]) ifTrue:[
-            attrs := WeakIdentityDictionary new.
-            attrs at:attributeKey put:anObject.
-            self objectAttributes:attrs.
-        ] ifFalse:[
-            attrs at:attributeKey put:anObject.
-        ].
+	| attrs |
+
+	attrs := self objectAttributes.
+	(attrs isNil or:[attrs size == 0]) ifTrue:[
+	    attrs := WeakIdentityDictionary new.
+	    attrs at:attributeKey put:anObject.
+	    self objectAttributes:attrs.
+	] ifFalse:[
+	    attrs at:attributeKey put:anObject.
+	].
     ] valueUninterruptably
 
     "Attaching additional attributes (slots) to an arbitrary object:
@@ -1642,24 +1681,24 @@
     "/ is possibly accessed from multiple threads.
 
     (OperatingSystem blockInterrupts) ifTrue:[
-        "/ the common case - already blocked
-
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            ObjectAttributes removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            ObjectAttributes at:self put:aCollection
-        ].
-        ^ self
+	"/ the common case - already blocked
+
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    ObjectAttributes removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    ObjectAttributes at:self put:aCollection
+	].
+	^ self
     ].
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            ObjectAttributes removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            ObjectAttributes at:self put:aCollection
-        ].
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    ObjectAttributes removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    ObjectAttributes at:self put:aCollection
+	].
     ] ensure:[
-        OperatingSystem unblockInterrupts
+	OperatingSystem unblockInterrupts
     ]
 
     "Created: / 22.1.1998 / 21:29:35 / av"
@@ -1672,32 +1711,33 @@
     "/ must do this save from interrupts, since the attributes collection
     "/ is possibly accessed from multiple threads.
     [
-        |attrs n a|
-
-        attrs := self objectAttributes.
-        attrs notNil ifTrue:[
-            attrs size == 0 ifTrue:[
-                self objectAttributes:nil
-            ] ifFalse:[
-                attrs removeKey:attributeKey ifAbsent:nil.
-                attrs size == 0 ifTrue:[
-                    self objectAttributes:nil
-                ]
-            ]
-        ]
+	|attrs n a|
+
+	attrs := self objectAttributes.
+	attrs notNil ifTrue:[
+	    attrs size == 0 ifTrue:[
+		self objectAttributes:nil
+	    ] ifFalse:[
+		attrs removeKey:attributeKey ifAbsent:nil.
+		attrs size == 0 ifTrue:[
+		    self objectAttributes:nil
+		]
+	    ]
+	]
     ] valueUninterruptably
 
     "Created: / 22.1.1998 / 21:29:39 / av"
     "Modified: / 18.2.2000 / 11:32:19 / cg"
 ! !
 
+
 !Object methodsFor:'change & update'!
 
 broadcast:aSelectorSymbol
     "send a message with selector aSelectorSymbol to all my dependents"
 
     self dependentsDo:[:dependent |
-        dependent perform:aSelectorSymbol
+	dependent perform:aSelectorSymbol
     ]
 !
 
@@ -1706,7 +1746,7 @@
      argument anArgument to all my dependents."
 
     self dependentsDo:[:dependent |
-        dependent perform:aSelectorSymbol with:anArgument
+	dependent perform:aSelectorSymbol with:anArgument
     ]
 !
 
@@ -1715,7 +1755,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-        dependent updateRequest ifFalse:[^ false].
+	dependent updateRequest ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1725,7 +1765,7 @@
      grant the request, and return true if so"
 
     self dependentsDo:[:dependent |
-        (dependent updateRequest:aSymbol) ifFalse:[^ false].
+	(dependent updateRequest:aSymbol) ifFalse:[^ false].
     ].
     ^ true
 !
@@ -1753,9 +1793,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-        dependent == anObject ifFalse:[
-            (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
-        ]
+	dependent == anObject ifFalse:[
+	    (dependent updateRequest:aSymbol with:aParameter from:anObject) ifFalse:[^ false].
+	]
     ].
     ^ true
 !
@@ -1767,9 +1807,9 @@
      about to send the change request."
 
     self dependentsDo:[:dependent |
-        dependent == anObject ifFalse:[
-            (dependent updateRequest) ifFalse:[^ false].
-        ]
+	dependent == anObject ifFalse:[
+	    (dependent updateRequest) ifFalse:[^ false].
+	]
     ].
     ^ true
 !
@@ -1796,7 +1836,7 @@
      and anArgument as arguments."
 
     self dependentsDo:[:dependent |
-        dependent update:aParameter with:anArgument from:self
+	dependent update:aParameter with:anArgument from:self
     ]
 !
 
@@ -1865,7 +1905,7 @@
 
     (self dependents includesIdentical:someone)
     ifFalse:[
-        ^ aBlock value.
+	^ aBlock value.
     ].
     self removeDependent:someone.
     ^ aBlock ensure:[ self addDependent:someone ]
@@ -1880,14 +1920,15 @@
     ^ self
 ! !
 
+
 !Object methodsFor:'comparing'!
 
 = anObject
     "return true, if the receiver and the arg have the same structure.
      Notice:
-        This method is partially open coded (inlined) by the compiler(s)
-        identical objects are always considered equal.
-        redefining it may not work as expected."
+	This method is partially open coded (inlined) by the compiler(s)
+	identical objects are always considered equal.
+	redefining it may not work as expected."
 
     ^ self == anObject
 !
@@ -1896,8 +1937,8 @@
     "return true, if the receiver and the arg are the same object.
      Never redefine this in any class.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
 
@@ -1915,28 +1956,28 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-
-        "compare the indexed variables"
-        1 to:sz do:[:i |
-            val := self basicAt:i.
-            val isLiteral ifTrue:[
-                val = (anObject basicAt:i) ifFalse:[^ false].
-            ] ifFalse:[
-                (val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
-            ]
-        ]
+	sz := self basicSize.
+
+	"compare the indexed variables"
+	1 to:sz do:[:i |
+	    val := self basicAt:i.
+	    val isLiteral ifTrue:[
+		val = (anObject basicAt:i) ifFalse:[^ false].
+	    ] ifFalse:[
+		(val deepSameContentsAs:(anObject basicAt:i)) ifFalse:[^ false].
+	    ]
+	]
     ].
 
     "compare the instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-        val := self instVarAt:i.
-        val isLiteral ifTrue:[
-            val = (anObject instVarAt:i) ifFalse:[^ false].
-        ] ifFalse:[
-            (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
-        ]
+	val := self instVarAt:i.
+	val isLiteral ifTrue:[
+	    val = (anObject instVarAt:i) ifFalse:[^ false].
+	] ifFalse:[
+	    (val deepSameContentsAs:(anObject instVarAt:i)) ifFalse:[^ false].
+	]
     ].
 
     ^ true
@@ -1975,25 +2016,25 @@
     static unsigned nextHash = 0;
 
     if (__isNonNilObject(self)) {
-        hash = __GET_HASH(self);
-        if (hash == 0) {
-            /* has no hash yet */
-
-            if (++nextHash > __MAX_HASH__) {
-                nextHash = 1;
-            }
-            hash = nextHash;
-            __SET_HASH(self, hash);
-        }
-
-        /*
-         * now, we got 11 bits for hashing;
-         * make it as large as possible; since most hashers use the returned
-         * key and take it modulo some prime number, this will allow for
-         * better distribution (i.e. bigger empty spaces) in hashed collection.
-         */
-        hash = __MAKE_HASH__(hash);
-        RETURN ( __mkSmallInteger(hash) );
+	hash = __GET_HASH(self);
+	if (hash == 0) {
+	    /* has no hash yet */
+
+	    if (++nextHash > __MAX_HASH__) {
+		nextHash = 1;
+	    }
+	    hash = nextHash;
+	    __SET_HASH(self, hash);
+	}
+
+	/*
+	 * now, we got 11 bits for hashing;
+	 * make it as large as possible; since most hashers use the returned
+	 * key and take it modulo some prime number, this will allow for
+	 * better distribution (i.e. bigger empty spaces) in hashed collection.
+	 */
+	hash = __MAKE_HASH__(hash);
+	RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     ^ 0 "never reached, since redefined in UndefinedObject and SmallInteger"
@@ -2013,53 +2054,53 @@
     static unsigned INT nextClassHash = 0;
 
     if (__isNonNilObject(self)) {
-        /*
-         * my own identityHash
-         */
-        hash1 = __GET_HASH(self);
-        if (hash1 == 0) {
-            /* has no hash yet */
-
-            if (++nextHash > __MAX_HASH__) {
-                nextHash = 1;
-            }
-            hash1 = nextHash;
-            __SET_HASH(self, hash1);
-        }
-        /*
-         * my classes identityHash
-         */
-        o = __qClass(self);
-        hash2 = __GET_HASH(o);
-        if (hash2 == 0) {
-            /* has no hash yet */
-
-            if (++nextClassHash > __MAX_HASH__) {
-                nextClassHash = 1;
-            }
-            hash2 = nextClassHash;
-            __SET_HASH(o, hash2);
-        }
-
-        /*
-         * some bits of my size
-         */
-        sz = __qSize(self);
-
-        /*
-         * now, we got 11 + 11 + 8 bits for hashing;
-         * make it as large as possible; since most hashers use the returned
-         * key and take it modulo some prime number, this will allow for
-         * better distribution (i.e. bigger empty spaces) in hashed collection.
-         */
-        hash = (hash1 << 11) | hash2;           /* 22 bits */
-        hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
-
-        while ((hash & 0x20000000) == 0) {
-            hash <<= 1;
-        }
-
-        RETURN ( __mkSmallInteger(hash) );
+	/*
+	 * my own identityHash
+	 */
+	hash1 = __GET_HASH(self);
+	if (hash1 == 0) {
+	    /* has no hash yet */
+
+	    if (++nextHash > __MAX_HASH__) {
+		nextHash = 1;
+	    }
+	    hash1 = nextHash;
+	    __SET_HASH(self, hash1);
+	}
+	/*
+	 * my classes identityHash
+	 */
+	o = __qClass(self);
+	hash2 = __GET_HASH(o);
+	if (hash2 == 0) {
+	    /* has no hash yet */
+
+	    if (++nextClassHash > __MAX_HASH__) {
+		nextClassHash = 1;
+	    }
+	    hash2 = nextClassHash;
+	    __SET_HASH(o, hash2);
+	}
+
+	/*
+	 * some bits of my size
+	 */
+	sz = __qSize(self);
+
+	/*
+	 * now, we got 11 + 11 + 8 bits for hashing;
+	 * make it as large as possible; since most hashers use the returned
+	 * key and take it modulo some prime number, this will allow for
+	 * better distribution (i.e. bigger empty spaces) in hashed collection.
+	 */
+	hash = (hash1 << 11) | hash2;           /* 22 bits */
+	hash = (hash << 8) | (sz & 0xFC);       /* 30 bits */
+
+	while ((hash & 0x20000000) == 0) {
+	    hash <<= 1;
+	}
+
+	RETURN ( __mkSmallInteger(hash) );
     }
 %}.
     "never reached, since UndefinedObject and SmallInteger are not hashed upon in binary storage"
@@ -2078,13 +2119,13 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-        anObject basicSize >= sz ifFalse:[^ false].
-
-        "compare the indexed variables"
-        1 to:sz do:[:i |
-            (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
-        ]
+	sz := self basicSize.
+	anObject basicSize >= sz ifFalse:[^ false].
+
+	"compare the indexed variables"
+	1 to:sz do:[:i |
+	    (self basicAt:i) == (anObject basicAt:i) ifFalse:[^ false].
+	]
     ].
 
     "compare the instance variables"
@@ -2092,7 +2133,7 @@
     anObject class instSize >= sz ifFalse:[^ false].
 
     1 to:sz do:[:i |
-        (self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
+	(self instVarAt:i) == (anObject instVarAt:i) ifFalse:[^ false].
     ].
 
     ^ true
@@ -2109,9 +2150,9 @@
 ~= anObject
     "return true, if the receiver and the arg do not have the same structure.
      Notice:
-        This method is partially open coded (inlined) by the compiler(s)
-        identical objects are never considered unequal.
-        redefining it may not work as expected."
+	This method is partially open coded (inlined) by the compiler(s)
+	identical objects are never considered unequal.
+	redefining it may not work as expected."
 
     ^ (self = anObject) not
 !
@@ -2120,8 +2161,8 @@
     "return true, if the receiver and the arg are not the same object.
      Never redefine this in any class.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
 %{  /* NOCONTEXT */
     RETURN ( (self == anObject) ? false : true );
@@ -2212,24 +2253,24 @@
     "process the named instance variables"
     sz := myClass instSize.
     1 to:sz do:[:i |
-        t := anObject instVarAt:i.
-        aSymbol ~~ #yourself ifTrue:[
-            t := t perform:aSymbol
-        ].
-        self instVarAt:i put:t
+	t := anObject instVarAt:i.
+	aSymbol ~~ #yourself ifTrue:[
+	    t := t perform:aSymbol
+	].
+	self instVarAt:i put:t
     ].
 
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-
-        "process the indexed instance variables"
-        1 to:sz do:[:i |
-            t := anObject basicAt:i.
-            aSymbol ~~ #yourself ifTrue:[
-                t := t perform:aSymbol.
-            ].
-            self basicAt:i put:t.
-        ]
+	sz := self basicSize.
+
+	"process the indexed instance variables"
+	1 to:sz do:[:i |
+	    t := anObject basicAt:i.
+	    aSymbol ~~ #yourself ifTrue:[
+		t := t perform:aSymbol.
+	    ].
+	    self basicAt:i put:t.
+	]
     ].
 !
 
@@ -2245,36 +2286,36 @@
     myInfo := self class instanceVariableOffsets.
     otherInfo := aPrototype class instanceVariableOffsets.
     myInfo keysAndValuesDo:[:name :index | |varIndexAssoc|
-        varIndexAssoc := otherInfo at:name ifAbsent:[].
-        varIndexAssoc notNil ifTrue:[
-            self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
-        ]
+	varIndexAssoc := otherInfo at:name ifAbsent:[].
+	varIndexAssoc notNil ifTrue:[
+	    self instVarAt:index put:(aPrototype instVarAt:(varIndexAssoc value))
+	]
     ].
     self isVariable ifTrue:[
-        1 to:(self basicSize min:aPrototype basicSize) do:[:index |
-            self basicAt:index put:(aPrototype basicAt:index)
-        ].
+	1 to:(self basicSize min:aPrototype basicSize) do:[:index |
+	    self basicAt:index put:(aPrototype basicAt:index)
+	].
     ].
 
     "
      Class withoutUpdatingChangesDo:[
-         Point subclass:#Point3D
-           instanceVariableNames:'z'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
+	 Point subclass:#Point3D
+	   instanceVariableNames:'z'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 (Point3D new cloneInstanceVariablesFrom:1@2) inspect.
      ]
     "
 
     "
      Class withoutUpdatingChangesDo:[
-         Point variableSubclass:#Point3D
-           instanceVariableNames:'z'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
+	 Point variableSubclass:#Point3D
+	   instanceVariableNames:'z'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 ((Point3D new:2) cloneInstanceVariablesFrom:#(1 2 3)) inspect.
      ]
     "
 
@@ -2282,19 +2323,19 @@
      |someObject|
 
      Class withoutUpdatingChangesDo:[
-         Object subclass:#TestClass1
-           instanceVariableNames:'foo bar'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         someObject := TestClass1 new.
-         someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
-         Object subclass:#TestClass2
-           instanceVariableNames:'bar foo'
-           classVariableNames:''
-           poolDictionaries:''
-           category:'testing'.
-         (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
+	 Object subclass:#TestClass1
+	   instanceVariableNames:'foo bar'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 someObject := TestClass1 new.
+	 someObject instVarAt:1 put:'foo'; instVarAt:2 put:'bar'.
+	 Object subclass:#TestClass2
+	   instanceVariableNames:'bar foo'
+	   classVariableNames:''
+	   poolDictionaries:''
+	   category:'testing'.
+	 (TestClass2 new cloneInstanceVariablesFrom:someObject) inspect.
      ]
     "
 
@@ -2324,8 +2365,8 @@
 copyToLevel:level
     "a controlled deepCopy, where the number of levels can be specified.
      Notice:
-         This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
-         i.e. identical references in the source are copied multiple times into the copy."
+	 This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
+	 i.e. identical references in the source are copied multiple times into the copy."
 
     |newObject newLevel class sz "{Class: SmallInteger}" newInst|
 
@@ -2339,22 +2380,22 @@
     "process the named instance variables"
     sz := class instSize.
     1 to:sz do:[:i |
-        newInst := newObject instVarAt:i.
-        newInst notNil ifTrue:[
-            newObject instVarAt:i put:(newInst copyToLevel:newLevel).
-        ].
+	newInst := newObject instVarAt:i.
+	newInst notNil ifTrue:[
+	    newObject instVarAt:i put:(newInst copyToLevel:newLevel).
+	].
     ].
 
     class isVariable ifTrue:[
-        sz := newObject basicSize.
-
-        "process the indexed instance variables"
-        1 to:sz do:[:i |
-            newInst := newObject basicAt:i.
-            newInst notNil ifTrue:[
-                newObject basicAt:i put:(newInst copyToLevel:newLevel).
-            ].
-        ]
+	sz := newObject basicSize.
+
+	"process the indexed instance variables"
+	1 to:sz do:[:i |
+	    newInst := newObject basicAt:i.
+	    newInst notNil ifTrue:[
+		newObject basicAt:i put:(newInst copyToLevel:newLevel).
+	    ].
+	]
     ].
     ^ newObject
 
@@ -2362,24 +2403,24 @@
      |a b|
 
      a := #(
-            '1.1'
-            '1.2'
-            '1.3'
-            (
-                '1.41'
-                '1.42'
-                '1.43'
-                    (
-                        '1.441'
-                        '1.442'
-                        '1.443'
-                        ( '1.4441' '1.4442' '1.4443' )
-                        '1.445'
-                    )
-                '1.45'
-            )
-            '1.5'
-           ).
+	    '1.1'
+	    '1.2'
+	    '1.3'
+	    (
+		'1.41'
+		'1.42'
+		'1.43'
+		    (
+			'1.441'
+			'1.442'
+			'1.443'
+			( '1.4441' '1.4442' '1.4443' )
+			'1.445'
+		    )
+		'1.45'
+	    )
+	    '1.5'
+	   ).
 
       b := a copyToLevel:1.
       self assert: ( (a at:1) == (b at:1) ).
@@ -2476,11 +2517,11 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        basicSize := self basicSize.
-        aCopy := myClass basicNew:basicSize.
+	basicSize := self basicSize.
+	aCopy := myClass basicNew:basicSize.
     ] ifFalse:[
-        basicSize := 0.
-        aCopy := myClass basicNew
+	basicSize := 0.
+	aCopy := myClass basicNew
     ].
     aCopy setHashFrom:self.
     aDictionary at:self put:aCopy.
@@ -2490,40 +2531,40 @@
     "
     instSize := myClass instSize.
     1 to:instSize do:[:i |
-        (self skipInstvarIndexInDeepCopy:i) ifFalse:[
-            iOrig := self instVarAt:i.
-            iOrig notNil ifTrue:[
-                iCopy := aDictionary at:iOrig ifAbsent:nil.
-                iCopy isNil ifTrue:[
-                    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-                ].
-                aCopy instVarAt:i put:iCopy
-            ]
-        ]
+	(self skipInstvarIndexInDeepCopy:i) ifFalse:[
+	    iOrig := self instVarAt:i.
+	    iOrig notNil ifTrue:[
+		iCopy := aDictionary at:iOrig ifAbsent:nil.
+		iCopy isNil ifTrue:[
+		    iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+		].
+		aCopy instVarAt:i put:iCopy
+	    ]
+	]
     ].
 
     "
      copy indexed instvars - if any
     "
     basicSize ~~ 0 ifTrue:[
-        myClass isBits ifTrue:[
-            "block-copy indexed instvars"
-            aCopy replaceFrom:1 to:basicSize with:self startingAt:1
-        ] ifFalse:[
-            "individual deep copy the indexed variables"
-            1 to:basicSize do:[:i |
-                iOrig := self basicAt:i.
-                iOrig notNil ifTrue:[
-                    "/ used to be dict-includesKey-ifTrue[dict-at:],
-                    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
-                    iCopy := aDictionary at:iOrig ifAbsent:nil.
-                    iCopy isNil ifTrue:[
-                        iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
-                    ].
-                    aCopy basicAt:i put:iCopy
-                ]
-            ]
-        ]
+	myClass isBits ifTrue:[
+	    "block-copy indexed instvars"
+	    aCopy replaceFrom:1 to:basicSize with:self startingAt:1
+	] ifFalse:[
+	    "individual deep copy the indexed variables"
+	    1 to:basicSize do:[:i |
+		iOrig := self basicAt:i.
+		iOrig notNil ifTrue:[
+		    "/ used to be dict-includesKey-ifTrue[dict-at:],
+		    "/ changed to use dict-at:ifAbsent:, to avoid double lookup in dictionary
+		    iCopy := aDictionary at:iOrig ifAbsent:nil.
+		    iCopy isNil ifTrue:[
+			iCopy := iOrig deepCopyUsing:aDictionary postCopySelector:postCopySelector
+		    ].
+		    aCopy basicAt:i put:iCopy
+		]
+	    ]
+	]
     ].
 
     aCopy perform:postCopySelector withOptionalArgument:self and:aDictionary.
@@ -2562,9 +2603,9 @@
     REGISTER unsigned h;
 
     if (__isNonNilObject(self) && __isNonNilObject(anObject)) {
-        h = __GET_HASH(anObject);
-        __SET_HASH(self, h);
-        RETURN (self);
+	h = __GET_HASH(anObject);
+	__SET_HASH(self, h);
+	RETURN (self);
     }
 %}.
     self primitiveFailed    "neither receiver not arg may be nil or SmallInteger"
@@ -2589,54 +2630,54 @@
      */
     if (((flags & ~ARRAYMASK) == 0)
      && ((flags & ARRAYMASK) != WKPOINTERARRAY)) {
-        sz = __qSize(self);
-        __PROTECT__(self);
-        __qNew(theCopy, sz);    /* OBJECT ALLOCATION */
-        __UNPROTECT__(self);
-        if (theCopy) {
-            cls = __qClass(self);
-            spc = __qSpace(theCopy);
-
-            theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
-
-            sz = sz - OHDR_SIZE;
-            if (sz) {
-                char *src, *dst;
-
-                src = (char *)(__InstPtr(self)->i_instvars);
-                dst = (char *)(__InstPtr(theCopy)->i_instvars);
+	sz = __qSize(self);
+	__PROTECT__(self);
+	__qNew(theCopy, sz);    /* OBJECT ALLOCATION */
+	__UNPROTECT__(self);
+	if (theCopy) {
+	    cls = __qClass(self);
+	    spc = __qSpace(theCopy);
+
+	    theCopy->o_class = cls; __STORE_SPC(theCopy, cls, spc);
+
+	    sz = sz - OHDR_SIZE;
+	    if (sz) {
+		char *src, *dst;
+
+		src = (char *)(__InstPtr(self)->i_instvars);
+		dst = (char *)(__InstPtr(theCopy)->i_instvars);
 #ifdef bcopy4
-                {
-                    /* care for odd-number of longs */
-                    int nW = sz >> 2;
-
-                    if (sz & 3) {
-                        nW++;
-                    }
-
-                    bcopy4(src, dst, nW);
-                }
+		{
+		    /* care for odd-number of longs */
+		    int nW = sz >> 2;
+
+		    if (sz & 3) {
+			nW++;
+		    }
+
+		    bcopy4(src, dst, nW);
+		}
 #else
-                bcopy(src, dst, sz);
+		bcopy(src, dst, sz);
 #endif
 
-                flags &= ARRAYMASK;
-                if (flags == POINTERARRAY) {
-                    ninsts = __BYTES2OBJS__(sz);
-                } else {
-                    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-                }
-                if (ninsts) {
-                    do {
-                        OBJ el;
-
-                        el = __InstPtr(theCopy)->i_instvars[ninsts-1];
-                        __STORE_SPC(theCopy, el, spc);
-                    } while (--ninsts);
-                }
-            }
-            RETURN (theCopy);
-        }
+		flags &= ARRAYMASK;
+		if (flags == POINTERARRAY) {
+		    ninsts = __BYTES2OBJS__(sz);
+		} else {
+		    ninsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+		}
+		if (ninsts) {
+		    do {
+			OBJ el;
+
+			el = __InstPtr(theCopy)->i_instvars[ninsts-1];
+			__STORE_SPC(theCopy, el, spc);
+		    } while (--ninsts);
+		}
+	    }
+	    RETURN (theCopy);
+	}
     }
 %}.
     "/ fallBack for special objects & memoryAllocation failure case
@@ -2656,9 +2697,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-        aCopy := myClass basicNew:(self basicSize).
+	aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-        aCopy := myClass basicNew
+	aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2691,9 +2732,9 @@
     |myClass aCopy|
 
     (myClass := self class) isVariable ifTrue:[
-        aCopy := myClass basicNew:(self basicSize).
+	aCopy := myClass basicNew:(self basicSize).
     ] ifFalse:[
-        aCopy := myClass basicNew
+	aCopy := myClass basicNew
     ].
 
     "copy the instance variables"
@@ -2715,11 +2756,11 @@
 
     "/ could still be a block or false.
     (aBooleanOrBlock value) ifFalse:[
-        AssertionFailedError
-            raiseRequestWith:self
-            errorString:('Assertion failed in ',
-                         thisContext sender printString,
-                         '[', thisContext sender lineNumber printString,']')
+	AssertionFailedError
+	    raiseRequestWith:self
+	    errorString:('Assertion failed in ',
+			 thisContext sender printString,
+			 '[', thisContext sender lineNumber printString,']')
     ].
 
     "
@@ -2740,9 +2781,9 @@
     (Smalltalk at:#IgnoreAssertion ifAbsent:false) == true ifTrue:[^ self].
 
     (aBooleanOrBlock value) ifFalse:[
-        AssertionFailedError
-            raiseRequestWith:self
-            errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
+	AssertionFailedError
+	    raiseRequestWith:self
+	    errorString:(messageIfFailing, ' {',thisContext sender "methodHome" printString,' }')
     ].
 
     "
@@ -2759,12 +2800,12 @@
      this method should NOT be redefined in subclasses."
 
     Inspector isNil ifTrue:[
-        "
-         for systems without GUI
-        "
-        self warn:'No Inspector defined (Inspector is nil).'
+	"
+	 for systems without GUI
+	"
+	self warn:'No Inspector defined (Inspector is nil).'
     ] ifFalse:[
-        Inspector openOn:self
+	Inspector openOn:self
     ]
 
     "Modified: 18.5.1996 / 15:43:25 / cg"
@@ -2784,9 +2825,9 @@
 
     "/ dont send #breakPoint:info: here - ask cg why.
     (self isBreakPointEnabled:someKey) ifTrue:[
-        ^ HaltSignal
-            raiseRequestWith:someKey
-            errorString:('Breakpoint encountered: %1' bindWith:someKey)
+	^ HaltSignal
+	    raiseRequestWith:someKey
+	    errorString:('Breakpoint encountered: %1' bindWith:someKey)
     ].
 
     "
@@ -2814,9 +2855,9 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-        ^ HaltSignal
-            raiseRequestWith:someKey
-            errorString:(infoString bindWith:someKey)
+	^ HaltSignal
+	    raiseRequestWith:someKey
+	    errorString:(infoString bindWith:someKey)
     ].
 !
 
@@ -2846,7 +2887,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     (self isBreakPointEnabled:someKey) ifTrue:[
-        aBlock value
+	aBlock value
     ].
 
     "
@@ -2882,10 +2923,10 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints notNil ifTrue:[
-        EnabledBreakPoints remove:someKey ifAbsent:[].
-        EnabledBreakPoints isEmpty ifTrue:[
-            EnabledBreakPoints := nil
-        ].
+	EnabledBreakPoints remove:someKey ifAbsent:[].
+	EnabledBreakPoints isEmpty ifTrue:[
+	    EnabledBreakPoints := nil
+	].
     ].
 
     "
@@ -2904,7 +2945,7 @@
     "{ Pragma: +optSpace }"
 
     EnabledBreakPoints isNil ifTrue:[
-        EnabledBreakPoints := Set new.
+	EnabledBreakPoints := Set new.
     ].
     EnabledBreakPoints add:someKey.
 
@@ -2956,7 +2997,7 @@
 "/    something = OperatingSystem getLoginName ifTrue:[^ true].
 "/    something = 'testThis' ifTrue:[^ true].
     EncounteredBreakPoints notNil ifTrue:[
-        EncounteredBreakPoints add:someKey
+	EncounteredBreakPoints add:someKey
     ].
 
     ^ (EnabledBreakPoints notNil and:[ EnabledBreakPoints includes:someKey ])
@@ -2987,18 +3028,18 @@
     "for compatibility & debugging support:
      check if the receiver isKindOf:aClass and raise an error if not.
      Notice:
-        it is VERY questionable, if it makes sense to add manual
-        type checks to a dynamically typed language like smalltalk.
-        It will, at least, slow down performance,
-        make your code less reusable and clutter your code with stupid sends
-        of this selector. Also, read the comment in isKindOf:, regarding the
-        use of isXXX check methods.
+	it is VERY questionable, if it makes sense to add manual
+	type checks to a dynamically typed language like smalltalk.
+	It will, at least, slow down performance,
+	make your code less reusable and clutter your code with stupid sends
+	of this selector. Also, read the comment in isKindOf:, regarding the
+	use of isXXX check methods.
      You see: The author does not like this at all ..."
 
     <resource: #skipInDebuggersWalkBack>
 
     (self isKindOf:aClass) ifFalse:[
-        self error:'argument is not of expected type'
+	self error:'argument is not of expected type'
     ]
 !
 
@@ -3046,7 +3087,7 @@
     ('         called from ' , sender sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-        '------>  ' infoPrint. message infoPrintCR
+	'------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3091,8 +3132,8 @@
     |spec sender|
 
     Smalltalk isSmalltalkDevelopmentSystem ifFalse:[
-        "ignore in production systems"
-        ^ self.
+	"ignore in production systems"
+	^ self.
     ].
 
     spec := aContext methodPrintString.
@@ -3101,14 +3142,14 @@
     ('         And may not be present in future ST/X versions.') infoPrintCR.
     ('         called from ' , sender printString) infoPrintCR.
     (sender selector startsWith:'perform:') ifTrue:[
-        sender := sender sender.
-        (sender selector startsWith:'perform:') ifTrue:[
-            sender := sender sender.
-        ].
-        ('         called from ' , sender printString) infoPrintCR.
+	sender := sender sender.
+	(sender selector startsWith:'perform:') ifTrue:[
+	    sender := sender sender.
+	].
+	('         called from ' , sender printString) infoPrintCR.
     ].
     message notNil ifTrue:[
-        '------>  ' infoPrint. message infoPrintCR
+	'------>  ' infoPrint. message infoPrintCR
     ]
 
     "
@@ -3128,9 +3169,9 @@
     "
      example:
 
-        ...
-        self todo.
-        ...
+	...
+	self todo.
+	...
     "
 !
 
@@ -3145,11 +3186,11 @@
     "
      example:
 
-        ...
-        self todo:[
-            code which needs more work ...
-        ].
-        ...
+	...
+	self todo:[
+	    code which needs more work ...
+	].
+	...
     "
 
     "Created: / 25-05-2007 / 21:34:39 / cg"
@@ -3170,35 +3211,35 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps dep|
-
-        deps := self dependents.
-
-        "/ to save a fair amount of memory in case of
-        "/ many dependencies, we store a single dependent in
-        "/ a WeakArray, and switch to a WeakSet if more dependents are
-        "/ added.
-
-        (deps isNil or:[deps size == 0]) ifTrue:[
-            self dependents:(WeakArray with:anObject)
-        ] ifFalse:[
-            deps class == WeakArray ifTrue:[
-                dep := deps at:1.
-                dep ~~ anObject ifTrue:[
-                    (dep isNil or:[dep == 0]) ifTrue:[
-                        deps at:1 put:anObject
-                    ] ifFalse:[
-                        self dependents:(WeakIdentitySet with:dep with:anObject)
-                    ]
-                ]
-            ] ifFalse:[
-                deps add:anObject
-            ]
-        ]
+	|deps dep|
+
+	deps := self dependents.
+
+	"/ to save a fair amount of memory in case of
+	"/ many dependencies, we store a single dependent in
+	"/ a WeakArray, and switch to a WeakSet if more dependents are
+	"/ added.
+
+	(deps isNil or:[deps size == 0]) ifTrue:[
+	    self dependents:(WeakArray with:anObject)
+	] ifFalse:[
+	    deps class == WeakArray ifTrue:[
+		dep := deps at:1.
+		dep ~~ anObject ifTrue:[
+		    (dep isNil or:[dep == 0]) ifTrue:[
+			deps at:1 put:anObject
+		    ] ifFalse:[
+			self dependents:(WeakIdentitySet with:dep with:anObject)
+		    ]
+		]
+	    ] ifFalse:[
+		deps add:anObject
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Modified: / 27.10.1997 / 19:35:52 / cg"
@@ -3220,10 +3261,10 @@
 
     self breakDependents.
     1 to:self class instSize do:[:idx |
-        (self instVarAt:idx) breakDependentsRecursively.
+	(self instVarAt:idx) breakDependentsRecursively.
     ].
     1 to:self basicSize do:[:idx |
-        (self basicAt:idx) breakDependentsRecursively.
+	(self basicAt:idx) breakDependentsRecursively.
     ]
 !
 
@@ -3238,7 +3279,7 @@
     |deps|
 
     (deps := Dependencies at:self ifAbsent:nil) isNil ifTrue:[
-        ^ #().
+	^ #().
     ].
     ^ deps
 
@@ -3257,24 +3298,24 @@
     "/ faster execution (and to avoid creation of garbage blocks).
 
     (OperatingSystem blockInterrupts) ifTrue:[
-        "/ the common case - already blocked
-
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            Dependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            Dependencies at:self put:aCollection
-        ].
-        ^ self
+	"/ the common case - already blocked
+
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    Dependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    Dependencies at:self put:aCollection
+	].
+	^ self
     ].
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            Dependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            Dependencies at:self put:aCollection
-        ].
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    Dependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    Dependencies at:self put:aCollection
+	].
     ] ensure:[
-        OperatingSystem unblockInterrupts
+	OperatingSystem unblockInterrupts
     ]
 
     "Modified: 30.1.1997 / 21:22:10 / cg"
@@ -3287,15 +3328,15 @@
 
     deps := self dependents.
     deps size ~~ 0 ifTrue:[
-        deps do:[:d |
-                    (d notNil and:[d ~~ 0]) ifTrue:[
-                        aBlock value:d
-                    ]
-                ]
+	deps do:[:d |
+		    (d notNil and:[d ~~ 0]) ifTrue:[
+			aBlock value:d
+		    ]
+		]
     ].
     nwDeps := self nonWeakDependents.
     (nwDeps ~~ deps and:[nwDeps size ~~ 0]) ifTrue:[
-        nwDeps do:aBlock
+	nwDeps do:aBlock
     ].
 
     "Modified: / 30.1.1998 / 14:03:40 / cg"
@@ -3328,43 +3369,43 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps n d|
-
-        deps := self dependents.
-        deps size ~~ 0 ifTrue:[
-
-            "/ to save a fair amount of memory in case of
-            "/ many dependencies, we store a single dependent in
-            "/ a WeakArray, and switch to a WeakSet if more dependents are
-            "/ added. Here we have to do the inverse ...
-
-            ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
-                ((d := deps at:1) == anObject
-                or:[d isNil
-                or:[d == 0]]) ifTrue:[
-                    self dependents:nil
-                ]
-            ] ifFalse:[
-                deps remove:anObject ifAbsent:[].
-                (n := deps size) == 0 ifTrue:[
-                    self dependents:nil
-                ] ifFalse:[
-                    n == 1 ifTrue:[
-                        d := deps firstIfEmpty:nil.
-                        d notNil ifTrue:[
-                            deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
-                        ] ifFalse:[
-                            deps := nil
-                        ].
-                        self dependents:deps.
-                    ]
-                ]
-            ]
-        ]
+	|deps n d|
+
+	deps := self dependents.
+	deps size ~~ 0 ifTrue:[
+
+	    "/ to save a fair amount of memory in case of
+	    "/ many dependencies, we store a single dependent in
+	    "/ a WeakArray, and switch to a WeakSet if more dependents are
+	    "/ added. Here we have to do the inverse ...
+
+	    ((deps class == WeakArray) or:[deps class == Array]) ifTrue:[
+		((d := deps at:1) == anObject
+		or:[d isNil
+		or:[d == 0]]) ifTrue:[
+		    self dependents:nil
+		]
+	    ] ifFalse:[
+		deps remove:anObject ifAbsent:[].
+		(n := deps size) == 0 ifTrue:[
+		    self dependents:nil
+		] ifFalse:[
+		    n == 1 ifTrue:[
+			d := deps firstIfEmpty:nil.
+			d notNil ifTrue:[
+			    deps := (deps isWeakCollection ifTrue:[WeakArray] ifFalse:[Array]) with:d
+			] ifFalse:[
+			    deps := nil
+			].
+			self dependents:deps.
+		    ]
+		]
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Modified: / 05-07-2011 / 22:49:31 / cg"
@@ -3387,37 +3428,37 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps dep|
-
-        deps := self nonWeakDependents.
-
-        "/ to save a fair amount of memory in case of
-        "/ many dependencies, we store a single dependent in
-        "/ an Array, and switch to a Set if more dependents are
-        "/ added.
-
-        deps size == 0 ifTrue:[
-            anObject notNil ifTrue:[
-                self nonWeakDependents:(Array with:anObject).
-            ] ifFalse:[
-                "adding nil causes problems when adding the next one
-                 (see below: trying to add nil to IdentitySet)"
+	|deps dep|
+
+	deps := self nonWeakDependents.
+
+	"/ to save a fair amount of memory in case of
+	"/ many dependencies, we store a single dependent in
+	"/ an Array, and switch to a Set if more dependents are
+	"/ added.
+
+	deps size == 0 ifTrue:[
+	    anObject notNil ifTrue:[
+		self nonWeakDependents:(Array with:anObject).
+	    ] ifFalse:[
+		"adding nil causes problems when adding the next one
+		 (see below: trying to add nil to IdentitySet)"
 "/                self halt:'try to add nil to list of dependents'.
-            ].
-        ] ifFalse:[
-            deps class == Array ifTrue:[
-                dep := deps at:1.
-                dep ~~ anObject ifTrue:[
-                    self nonWeakDependents:(IdentitySet with:dep with:anObject)
-                ]
-            ] ifFalse:[
-                deps add:anObject
-            ]
-        ]
+	    ].
+	] ifFalse:[
+	    deps class == Array ifTrue:[
+		dep := deps at:1.
+		dep ~~ anObject ifTrue:[
+		    self nonWeakDependents:(IdentitySet with:dep with:anObject)
+		]
+	    ] ifFalse:[
+		deps add:anObject
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Created: / 19.4.1996 / 10:54:08 / cg"
@@ -3440,11 +3481,11 @@
      This is a private helper for directed dependencies."
 
     [
-        (aCollection isNil or:[aCollection isEmpty]) ifTrue:[
-            NonWeakDependencies removeKey:self ifAbsent:nil
-        ] ifFalse:[
-            NonWeakDependencies at:self put:aCollection
-        ]
+	(aCollection isNil or:[aCollection isEmpty]) ifTrue:[
+	    NonWeakDependencies removeKey:self ifAbsent:nil
+	] ifFalse:[
+	    NonWeakDependencies at:self put:aCollection
+	]
     ] valueUninterruptably
 
     "Created: 19.4.1996 / 11:07:47 / cg"
@@ -3463,35 +3504,36 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-        |deps n|
-
-        deps := self nonWeakDependents.
-        deps size ~~ 0 ifTrue:[
-            deps class == Array ifTrue:[
-                (deps at:1) == anObject ifTrue:[
-                    self nonWeakDependents:nil
-                ]
-            ] ifFalse:[
-                deps remove:anObject ifAbsent:[].
-                (n := deps size) == 0 ifTrue:[
-                    self nonWeakDependents:nil
-                ] ifFalse:[
-                    n == 1 ifTrue:[
-                        self nonWeakDependents:(Array with:(deps first))
-                    ]
-                ]
-            ]
-        ]
+	|deps n|
+
+	deps := self nonWeakDependents.
+	deps size ~~ 0 ifTrue:[
+	    deps class == Array ifTrue:[
+		(deps at:1) == anObject ifTrue:[
+		    self nonWeakDependents:nil
+		]
+	    ] ifFalse:[
+		deps remove:anObject ifAbsent:[].
+		(n := deps size) == 0 ifTrue:[
+		    self nonWeakDependents:nil
+		] ifFalse:[
+		    n == 1 ifTrue:[
+			self nonWeakDependents:(Array with:(deps first))
+		    ]
+		]
+	    ]
+	]
     ] ensure:[
-        wasBlocked ifFalse:[
-            OperatingSystem unblockInterrupts
-        ]
+	wasBlocked ifFalse:[
+	    OperatingSystem unblockInterrupts
+	]
     ]
 
     "Created: / 19.4.1996 / 11:44:44 / cg"
     "Modified: / 30.1.1998 / 14:04:01 / cg"
 ! !
 
+
 !Object methodsFor:'dependents-st/v event simulation'!
 
 removeActionsForEvent:eventName
@@ -3536,8 +3578,8 @@
     "/ what a kludge - Dolphin and Squeak mean: printOn: a stream;
     "/ ST/X (and some old ST80's) mean: draw-yourself on a GC.
     aGCOrStream isStream ifTrue:[
-        self printOn:aGCOrStream.
-        ^ self
+	self printOn:aGCOrStream.
+	^ self
     ].
     ^ self displayOn:aGCOrStream x:0 y:0.
 
@@ -3573,9 +3615,9 @@
     s := self displayString.
     yBaseline := y "+ aGc font ascent".
     opaque ifTrue:[
-        aGc displayOpaqueString:s x:x y:yBaseline.
+	aGc displayOpaqueString:s x:x y:yBaseline.
     ] ifFalse:[
-        aGc displayString:s x:x y:yBaseline.
+	aGc displayString:s x:x y:yBaseline.
     ].
 
     "Modified: 29.5.1996 / 16:29:38 / cg"
@@ -3597,7 +3639,7 @@
      but sometimes redefined for a better look.
 
      Note: the base method (used by the inspector) is #displayOn:.
-           So you should implement #displayOn: instead of #displayString in subclasses."
+	   So you should implement #displayOn: instead of #displayString in subclasses."
 
     |s|
 
@@ -3759,22 +3801,22 @@
     stop := aSpecArray size.
 
     2 to:stop by:2 do:[:i|
-        sel := aSpecArray at:i.
-        litVal := aSpecArray at:i + 1.
-
-        (self respondsTo:sel) ifTrue:[
-            val := litVal decodeAsLiteralArray.
-            self perform:sel with:val
-        ] ifFalse:[
-            Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
-            Transcript showCR:sel.
-
-            "/ thats a debug halt,
-            "/ it should probably be removed (to simply ignore unhandled attributes)...
-            "/ for now, it is left in, in order to easily find incompatibilities between
-            "/ VW and ST/X.
-            self breakPoint:#cg.
-        ]
+	sel := aSpecArray at:i.
+	litVal := aSpecArray at:i + 1.
+
+	(self respondsTo:sel) ifTrue:[
+	    val := litVal decodeAsLiteralArray.
+	    self perform:sel with:val
+	] ifFalse:[
+	    Transcript show:self class name; show:': unhandled literalArrayEncoding attribute: '.
+	    Transcript showCR:sel.
+
+	    "/ thats a debug halt,
+	    "/ it should probably be removed (to simply ignore unhandled attributes)...
+	    "/ for now, it is left in, in order to easily find incompatibilities between
+	    "/ VW and ST/X.
+	    self breakPoint:#cg.
+	]
     ]
 !
 
@@ -3787,7 +3829,7 @@
     |names encoding cls skipped slots|
 
     self isLiteral ifTrue:[
-        ^ self
+	^ self
     ].
 
     slots    := self literalArrayEncodingSlotOrder.
@@ -3798,22 +3840,22 @@
     encoding add:cls name.
 
     slots do:[:instSlot |
-        |value nm|
-
-        nm := names at:instSlot.
-        (skipped includes:nm) ifFalse:[
-            (value := self instVarAt:instSlot) notNil ifTrue:[
-                encoding add:(nm , ':') asSymbol.
-                encoding add:value literalArrayEncoding
-            ]
-        ]
+	|value nm|
+
+	nm := names at:instSlot.
+	(skipped includes:nm) ifFalse:[
+	    (value := self instVarAt:instSlot) notNil ifTrue:[
+		encoding add:(nm , ':') asSymbol.
+		encoding add:value literalArrayEncoding
+	    ]
+	]
     ].
     ^ encoding asArray
 
     "
-        (1 -> 2) literalArrayEncoding
-        DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
-           DebugView menuSpec
+	(1 -> 2) literalArrayEncoding
+	DebugView menuSpec decodeAsLiteralArray literalArrayEncoding  =
+	   DebugView menuSpec
     "
 !
 
@@ -3842,7 +3884,7 @@
 ambiguousMessage:aMessage
     "this message is sent by the system in case that it
      is not clear which method to execute in response to
-     aMessage. 
+     aMessage.
      Such situation may occur when a current selector namespace
      imports two namespaces and both define a method with the
      requested selector."
@@ -3870,34 +3912,34 @@
     (Processor isNil
     or:[Processor activeProcessIsSystemProcess
     or:[Smalltalk isInitialized not]]) ifTrue:[
-        ^ MiniDebugger
+	^ MiniDebugger
     ].
     (Screen isNil or:[Screen default isNil or:[Screen default isOpen not]]) ifTrue:[
-        Debugger isNil ifTrue:[^ nil].
-        ^ MiniDebugger
+	Debugger isNil ifTrue:[^ nil].
+	^ MiniDebugger
     ].
 
     context := thisContext.
     context := context findNextContextWithSelector:aSelector or:nil or:nil.
     [context notNil] whileTrue:[
-        ((context receiver class == Debugger)
-         and:[context selector == aSelector]) ifTrue:[
-            "we are already in some Debugger"
-            (Debugger == MiniDebugger) ifTrue:[
-                "we are already in the MiniDebugger"
-                ErrorRecursion ifFalse:[
-                    Smalltalk fatalAbort:'recursive error ...'
-                ]
-            ].
-            MiniDebugger isNil ifTrue:[
-                Smalltalk fatalAbort:'no debugger'
-            ].
-
-            "ok, an error occured while in the graphical debugger;
-             lets try MiniDebugger"
-            ^ MiniDebugger
-        ].
-        context := context findNextContextWithSelector:aSelector or:nil or:nil.
+	((context receiver class == Debugger)
+	 and:[context selector == aSelector]) ifTrue:[
+	    "we are already in some Debugger"
+	    (Debugger == MiniDebugger) ifTrue:[
+		"we are already in the MiniDebugger"
+		ErrorRecursion ifFalse:[
+		    Smalltalk fatalAbort:'recursive error ...'
+		]
+	    ].
+	    MiniDebugger isNil ifTrue:[
+		Smalltalk fatalAbort:'no debugger'
+	    ].
+
+	    "ok, an error occured while in the graphical debugger;
+	     lets try MiniDebugger"
+	    ^ MiniDebugger
+	].
+	context := context findNextContextWithSelector:aSelector or:nil or:nil.
     ].
     "not within Debugger - no problem"
     ^ Debugger
@@ -3914,8 +3956,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ VMInternalError
-          raiseWith:someReceiver
-          errorString:('bad class in send of #' , aMessage selector)
+	  raiseWith:someReceiver
+	  errorString:('bad class in send of #' , aMessage selector)
 
     "Modified: 23.1.1997 / 00:05:39 / cg"
 !
@@ -4052,7 +4094,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     mayProceed ifTrue:[
-        ^ ProceedableError raiseRequestWith:#error: errorString:aString
+	^ ProceedableError raiseRequestWith:#error: errorString:aString
     ].
 
     Error raiseWith:#error: errorString:aString
@@ -4181,7 +4223,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     index isInteger ifFalse:[
-        ^ self indexNotInteger:index
+	^ self indexNotInteger:index
     ].
     ^ self subscriptBoundsError:index
 !
@@ -4195,10 +4237,10 @@
 
 "/    ^ self error:'bad assign of ' , self printString ,
 "/                  ' (' , self class name , ') to integer-typed variable'
-    ^ InvalidTypeError 
-        raiseRequestErrorString:(
-            'bad assign of ' , self printString ,
-                  ' (' , self class name , ') to integer-typed variable')
+    ^ InvalidTypeError
+	raiseRequestErrorString:(
+	    'bad assign of ' , self printString ,
+		  ' (' , self class name , ') to integer-typed variable')
 
     "Modified: / 02-11-2012 / 10:25:36 / cg"
 !
@@ -4211,8 +4253,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ self error:'not an executable code object'
-    ^ ExecutionError 
-        raiseRequestErrorString:'not an executable code object'
+    ^ ExecutionError
+	raiseRequestErrorString:'not an executable code object'
 
     "Created: / 01-08-1997 / 00:16:44 / cg"
 !
@@ -4238,7 +4280,7 @@
 
     "/ ^ self error:'argument must be a Rectangle'
     ^ InvalidTypeError
-        raiseRequestErrorString:'argument must be a Rectangle'
+	raiseRequestErrorString:'argument must be a Rectangle'
 
     "Modified: / 02-11-2012 / 10:24:53 / cg"
 !
@@ -4252,7 +4294,7 @@
 
     "/ ^ self error:'argument must be a String'
     ^ InvalidTypeError
-        raiseRequestErrorString:'argument must be a String'
+	raiseRequestErrorString:'argument must be a String'
 
     "Modified: / 02-11-2012 / 10:24:35 / cg"
 !
@@ -4267,7 +4309,11 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-        raiseRequestErrorString:'receiver has no indexed variables'
+	raiseRequestErrorString:'receiver has no indexed variables'
+
+    "
+     1234 at:4
+    "
 
     "Modified: 26.7.1996 / 16:43:13 / cg"
 !
@@ -4281,8 +4327,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ ^ self error:'method/functionality is not yet implemented'
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'method/functionality is not yet implemented'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'method/functionality is not yet implemented'
 
     "Modified: / 02-11-2012 / 10:24:12 / cg"
 !
@@ -4302,95 +4348,95 @@
      ignore will raise an AbortOperationRequest.
     "
     Debugger isNil ifTrue:[
-        msgString := 'Error: ' , msgString.
-
-        thisContext isRecursive ifTrue:[
-            msgString errorPrintCR.
-            Smalltalk fatalAbort:'recursive unhandled exception'
-        ].
-
-        Smalltalk isStandAloneApp ifTrue:[
-            (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
-                "/ 'Halt ignored' infoPrintCR.
-                ^ nil
-            ].
-            "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
-            (ex signal == NoHandlerError
-             and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
-                ex description errorPrintCR.
-                OperatingSystem exit:130.
-            ].
-        ].
-
-        (Dialog notNil and:[Screen default notNil]) ifTrue:[
+	msgString := 'Error: ' , msgString.
+
+	thisContext isRecursive ifTrue:[
+	    msgString errorPrintCR.
+	    Smalltalk fatalAbort:'recursive unhandled exception'
+	].
+
+	Smalltalk isStandAloneApp ifTrue:[
+	    (ex signal == NoHandlerError and:[HaltInterrupt handles:ex unhandledException]) ifTrue:[
+		"/ 'Halt ignored' infoPrintCR.
+		^ nil
+	    ].
+	    "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+	    (ex signal == NoHandlerError
+	     and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+		ex description errorPrintCR.
+		OperatingSystem exit:130.
+	    ].
+	].
+
+	(Dialog notNil and:[Screen default notNil]) ifTrue:[
 false "oldCode" ifTrue:[
-            AbortOperationRequest isHandled ifTrue:[
-                answer := OptionBox
-                        request:msgString
-                        label:msgString
-                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
-                        values:#(exit terminate ignore abort)
-                        default:#abort.
-            ] ifFalse:[
-                answer := OptionBox
-                        request:msgString
-                        label:msgString
-                        buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
-                        values:#(exit terminate ignore )
-                        default:#terminate.
-            ].
-            answer isNil ifTrue:[ answer := #ignore].
-
-            answer == #abort ifTrue:[
-                ^ AbortOperationRequest raiseRequest
-            ].
-            answer == #ignore ifTrue:[
-                ^ nil
-            ].
-            answer == #terminate ifTrue:[
-                Processor activeProcess isSystemProcess ifTrue:[
-                    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
-                        ^ nil
-                    ].
-                ].
-                ^ Processor activeProcess terminate.
-            ].
-            "asking second time here to prevent the user from accidently closing his app"
-            answer == #exit ifTrue:[
-                answer := OptionBox
-                        request:'Do you really wish to exit this application (all changes will be lost)?'
-                        label:msgString
-                        buttonLabels:#('Yes' 'No' )
-                        values:#(exit abort)
-                        default:#abort.
-            ].
-            answer == #abort ifTrue:[
-                ^ AbortOperationRequest raiseRequest
-            ].
-
-            (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
-                ^ nil
-            ].
+	    AbortOperationRequest isHandled ifTrue:[
+		answer := OptionBox
+			request:msgString
+			label:msgString
+			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' 'Abort' )
+			values:#(exit terminate ignore abort)
+			default:#abort.
+	    ] ifFalse:[
+		answer := OptionBox
+			request:msgString
+			label:msgString
+			buttonLabels:#('Exit' 'Terminate Thread' 'Ignore' )
+			values:#(exit terminate ignore )
+			default:#terminate.
+	    ].
+	    answer isNil ifTrue:[ answer := #ignore].
+
+	    answer == #abort ifTrue:[
+		^ AbortOperationRequest raiseRequest
+	    ].
+	    answer == #ignore ifTrue:[
+		^ nil
+	    ].
+	    answer == #terminate ifTrue:[
+		Processor activeProcess isSystemProcess ifTrue:[
+		    (Dialog confirm:'Are you sure (this might finish the application)') ifFalse:[
+			^ nil
+		    ].
+		].
+		^ Processor activeProcess terminate.
+	    ].
+	    "asking second time here to prevent the user from accidently closing his app"
+	    answer == #exit ifTrue:[
+		answer := OptionBox
+			request:'Do you really wish to exit this application (all changes will be lost)?'
+			label:msgString
+			buttonLabels:#('Yes' 'No' )
+			values:#(exit abort)
+			default:#abort.
+	    ].
+	    answer == #abort ifTrue:[
+		^ AbortOperationRequest raiseRequest
+	    ].
+
+	    (Dialog confirm:'Are you sure you want to finish the application ?') ifFalse:[
+		^ nil
+	    ].
 ] ifFalse:[
-            self
-                errorNotify:msgString
-                from:ex suspendedContext
-                allowDebug:false.
-
-            "/ arrive here if proceeded...
-            ^ nil
+	    self
+		errorNotify:msgString
+		from:ex suspendedContext
+		allowDebug:false.
+
+	    "/ arrive here if proceeded...
+	    ^ nil
 ].
 
-        ].
-
-        "don't output the message, if the exception is a UserInterrupt (CTRL-C)"
-        (ex signal == NoHandlerError
-         and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
-            OperatingSystem exit:130.
-        ].
-        msgString errorPrintCR.
-        thisContext fullPrintAll.
-        OperatingSystem exit:1
+	].
+
+	"don't output the message, if the exception is a UserInterrupt (CTRL-C)"
+	(ex signal == NoHandlerError
+	 and:[ex unhandledException signal == UserInterrupt]) ifTrue:[
+	    OperatingSystem exit:130.
+	].
+	msgString errorPrintCR.
+	thisContext fullPrintAll.
+	OperatingSystem exit:1
     ].
 
     "
@@ -4398,13 +4444,13 @@
     "
     debugger := self appropriateDebugger:(thisContext selector).
     debugger isNil ifTrue:[
-        ^ AbortOperationRequest raiseRequest
+	^ AbortOperationRequest raiseRequest
     ].
 
     ^ debugger
-        enter:ex returnableSuspendedContext
-        withMessage:ex descriptionForDebugger
-        mayProceed:(ex mayProceed).
+	enter:ex returnableSuspendedContext
+	withMessage:ex descriptionForDebugger
+	mayProceed:(ex mayProceed).
 
     "Modified: / 05-12-2011 / 11:53:10 / cg"
 !
@@ -4413,7 +4459,8 @@
     "{ Pragma: +optSpace }"
 
     "report an error that some primitive code failed.
-     The error is reported by raising the PrimitiveFailure exception."
+     The error is reported by raising the PrimitiveFailure exception.
+     Sorry for the code duplication: it avoids the extra frame in the debugger."
 
     <resource: #skipInDebuggersWalkBack>
 
@@ -4422,15 +4469,15 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-                       in:sender.
+		       in:sender.
 
     "
      1234 primitiveFailed
 
      [
-        ExternalBytes new   basicAt:40
+	ExternalBytes new   basicAt:40
      ] on:PrimitiveFailure do:[:ex|
-        ex inspect
+	ex inspect
      ]
     "
 !
@@ -4448,8 +4495,8 @@
     sender := thisContext sender.
 
     ^ PrimitiveFailure raiseRequestWith:(Message selector:sender selector arguments:sender args)
-                       errorString:messageString
-                       in:sender.
+		       errorString:messageString
+		       in:sender.
 
     "
      1234 primitiveFailed:'this is a test'
@@ -4470,7 +4517,7 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-        raiseRequestWith:(Message selector:sender selector arguments:sender args)
+	raiseRequestWith:(Message selector:sender selector arguments:sender args)
 
      "
       self shouldImplement
@@ -4491,8 +4538,8 @@
     sender := thisContext sender.
 
     ^ UnimplementedFunctionalityError
-        raiseRequestWith:(Message selector:sender selector arguments:sender args)
-        errorString:what
+	raiseRequestWith:(Message selector:sender selector arguments:sender args)
+	errorString:what
 
      "
       self shouldImplement:'foobar'
@@ -4505,7 +4552,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ ExecutionError
-        raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+	raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 !
@@ -4516,8 +4563,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ ^ self error:'This message never may be sent to me!!'.
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'This message never may be sent to me!!'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'This message never may be sent to me!!'
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
     "Modified: / 02-11-2012 / 10:10:42 / cg"
@@ -4532,8 +4579,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     "/ self error:'method/functionality not appropriate for this class'
-    ^ MethodNotAppropriateError 
-        raiseRequestErrorString:'method/functionality not appropriate for this class'
+    ^ MethodNotAppropriateError
+	raiseRequestErrorString:'method/functionality not appropriate for this class'
 
     "Modified: / 02-11-2012 / 10:02:25 / cg"
 !
@@ -4583,8 +4630,8 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-        raiseRequestWith:anIndex
-        errorString:('subscript (' , anIndex printString , ') out of bounds')
+	raiseRequestWith:anIndex
+	errorString:('subscript (' , anIndex printString , ') out of bounds')
 
     "Modified: / 17.11.2001 / 22:49:56 / cg"
 !
@@ -4601,9 +4648,9 @@
 "/                  ' (' , self class name , ') to typed variable'
 
     ^ InvalidTypeError
-        raiseRequestErrorString:
-            ('bad assign of ' , self printString ,
-                  ' (' , self class name , ') to typed variable')
+	raiseRequestErrorString:
+	    ('bad assign of ' , self printString ,
+		  ' (' , self class name , ') to typed variable')
 
     "Modified: / 02-11-2012 / 10:19:15 / cg"
 ! !
@@ -4619,7 +4666,7 @@
     ^ 0
 
     "
-        [1 // 0] on:ArithmeticError do:9999
+	[1 // 0] on:ArithmeticError do:9999
     "
 !
 
@@ -4633,16 +4680,16 @@
      style ... (the idea was borrowed from the Self language).
 
      WARNING: dont 'optimize' away ifXXX: blocks
-              (i.e. do NOT replace
-                        foo ifTrue:[var1] ifFalse:[var2]
-               by:
-                        foo ifTrue:var1 ifFalse:var2
-              )
-              - the compilers will only generate inline code for the if,
-                iff the argument(s) are blocks - otherwise, a true send is
-                generated.
-              This 'oprimization' will work semantically correct,
-              but execute SLOWER instead."
+	      (i.e. do NOT replace
+			foo ifTrue:[var1] ifFalse:[var2]
+	       by:
+			foo ifTrue:var1 ifFalse:var2
+	      )
+	      - the compilers will only generate inline code for the if,
+		iff the argument(s) are blocks - otherwise, a true send is
+		generated.
+	      This 'oprimization' will work semantically correct,
+	      but execute SLOWER instead."
 
     ^ self
 
@@ -4786,30 +4833,30 @@
      used from other C subsystems too, to upcast errors.
      Especially, for subsystems which call errorHandler functions asynchronously.
      IDs (currently) used:
-        #DisplayError ..... x-error interrupt
-        #XtError      ..... xt-error interrupt (Xt interface is not yet published)
+	#DisplayError ..... x-error interrupt
+	#XtError      ..... xt-error interrupt (Xt interface is not yet published)
     "
 
     |handlers handler|
 
     handlers := ObjectMemory registeredErrorInterruptHandlers.
     handlers notNil ifTrue:[
-        handler := handlers at:errorID ifAbsent:nil.
-        handler notNil ifTrue:[
-            "/
-            "/ handler found; let it do whatever it wants ...
-            "/
-            handler errorInterrupt:errorID with:aParameter.
-            ^ self
-        ].
+	handler := handlers at:errorID ifAbsent:nil.
+	handler notNil ifTrue:[
+	    "/
+	    "/ handler found; let it do whatever it wants ...
+	    "/
+	    handler errorInterrupt:errorID with:aParameter.
+	    ^ self
+	].
     ].
 
     "/
     "/ no handler - raise errorSignal passing the errorId as parameter
     "/
     ^ Error
-        raiseRequestWith:errorID
-        errorString:('Subsystem error. ErrorID = ' , errorID printString)
+	raiseRequestWith:errorID
+	errorString:('Subsystem error. ErrorID = ' , errorID printString)
 !
 
 exceptionInterrupt
@@ -4835,12 +4882,12 @@
     where := thisContext sender.
     rec := where receiver.
     rec isNumber ifTrue:[
-        ^ rec class
-            raise:#domainErrorSignal
-            receiver:rec
-            selector:where selector
-            arguments:(where args asArray)
-            errorString:'floating point exception'
+	^ rec class
+	    raise:#domainErrorSignal
+	    receiver:rec
+	    selector:where selector
+	    arguments:(where args asArray)
+	    errorString:'floating point exception'
     ].
 
     "/ could be in some C-library ...
@@ -4905,31 +4952,31 @@
 "/            'Stray recursionInterrupt ...' infoPrintCR.
 "/            ^ self
 "/        ].
-        ObjectMemory infoPrinting ifTrue:[
-            'Object [info]: recursionInterrupt from:' printCR.
-            con := con sender.
-            remaining := 50.
-            [con notNil and:[remaining > 0]] whileTrue:[
-                sender := con sender.
-                '| ' print. con fullPrint.
-
-                nSkipped := 0.
-                [sender notNil and:[sender sender notNil
-                and:[sender selector == con selector
-                and:[sender sender selector == con selector
-                and:[sender method == con method]]]]] whileTrue:[
-                    nSkipped := nSkipped + 1.
-                    con := sender.
-                    sender := con sender.
-                ].
-                nSkipped > 0 ifTrue:[
-                    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
-                ].
-                con := sender.
-                remaining := remaining - 1
-            ].
-        ].
-        ^ RecursionInterruptSignal raiseSignal
+	ObjectMemory infoPrinting ifTrue:[
+	    'Object [info]: recursionInterrupt from:' printCR.
+	    con := con sender.
+	    remaining := 50.
+	    [con notNil and:[remaining > 0]] whileTrue:[
+		sender := con sender.
+		'| ' print. con fullPrint.
+
+		nSkipped := 0.
+		[sender notNil and:[sender sender notNil
+		and:[sender selector == con selector
+		and:[sender sender selector == con selector
+		and:[sender method == con method]]]]] whileTrue:[
+		    nSkipped := nSkipped + 1.
+		    con := sender.
+		    sender := con sender.
+		].
+		nSkipped > 0 ifTrue:[
+		    '| ... ***** ' print. nSkipped print. ' recursive contexts skipped *****' printCR.
+		].
+		con := sender.
+		remaining := remaining - 1
+	    ].
+	].
+	^ RecursionInterruptSignal raiseSignal
     ]
 
     "Modified: / 10.11.2001 / 15:15:56 / cg"
@@ -4961,42 +5008,42 @@
      action title screen|
 
     thisContext isRecursive ifTrue:[
-        'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
-        'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
+	'Severe error: signalInterrupt while processing a signalInterrupt.' errorPrintCR.
+	'Terminating process ' errorPrint. Processor activeProcess errorPrintCR.
 "/        GenericException handle:[:ex |
 "/            "/ ignore any error during termination
 "/        ] do:[
 "/           Processor activeProcess terminate.
 "/        ].
-        Processor activeProcess terminateNoSignal.
+	Processor activeProcess terminateNoSignal.
     ].
 
     "if there has been an ST-signal installed, use it ..."
     sig := OperatingSystem operatingSystemSignal:signalNumber.
     sig notNil ifTrue:[
-        sig raiseSignalWith:signalNumber.
-        ^ self.
+	sig raiseSignalWith:signalNumber.
+	^ self.
     ].
 
     "/ if handled, raise OSSignalInterruptSignal
     OSSignalInterrupt isHandled ifTrue:[
-        OSSignalInterrupt raiseRequestWith:signalNumber.
-        ^ self.
+	OSSignalInterrupt raiseRequestWith:signalNumber.
+	^ self.
     ].
 
     "
      special cases
-        - SIGPWR: power failure - write a crash image and continue
-        - SIGHUP: hang up - write a crash image and exit
+	- SIGPWR: power failure - write a crash image and continue
+	- SIGHUP: hang up - write a crash image and exit
     "
     (signalNumber == OperatingSystem sigPWR) ifTrue:[
-        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-        ^ self.
+	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+	^ self.
     ].
     (signalNumber == OperatingSystem sigHUP) ifTrue:[
-        SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
-        'Object [info]: exit due to hangup signal.' errorPrintCR.
-        Smalltalk exit:1.
+	SnapshotError ignoreIn:[ObjectMemory writeCrashImage].
+	'Object [info]: exit due to hangup signal.' errorPrintCR.
+	Smalltalk exit:1.
     ].
 
     name := OperatingSystem nameForSignal:signalNumber.
@@ -5006,7 +5053,7 @@
      or:[(screen := Screen current) isNil
      or:[(screen := Screen default) isNil
      or:[screen isOpen not]]]) ifTrue:[
-        ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
     ].
 
     "ungrab - in case it happened in a box/popupview
@@ -5018,105 +5065,105 @@
 
     "there is a screen. use it to bring up a box asking for what to do ..."
     Screen currentScreenQuerySignal answer:screen do:[
-        "
-         SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
-         since the system will retry the faulty instruction, which leads to
-         another signal - to avoid frustration, better not offer this option.
-        "
-        fatal := OperatingSystem isFatalSignal:signalNumber.
-        fatal ifTrue:[
-            (Debugger isNil or:[here isRecursive]) ifTrue:[
-                'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
-                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-            ].
-            "
-             a hard signal - go into debugger immediately
-            "
-            msg := 'OS-signal: ', name.
-
-            "/ the IRQ-PC is passed as low-hi, to avoid the need
-            "/ to allocate a LargeInteger in the VM during signal
-            "/ time. I know, this is ugly.
-
-            InterruptPcLow notNil ifTrue:[
-                pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
-                pc ~~ 0 ifTrue:[
-                    msg := msg , ' PC=' , (pc printStringRadix:16)
-                ].
-            ].
-            InterruptAddrLow notNil ifTrue:[
-                addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
-                addr ~~ 0 ifTrue:[
-                    msg := msg , ' ADDR=' , (addr printStringRadix:16)
-                ].
-            ].
-            Debugger enter:here withMessage:msg mayProceed:false.
-            "unreachable"
-            ^ nil.
-        ].
-
-        "if possible, open an option box asking the user what do.
-         Otherwise, start a debugger"
-        Dialog notNil ifTrue:[
-            titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
-            actions := #(save core exit debug).
-
-            action := nil.
-            title := 'OS Signal caught (' , name, ')'.
-            title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
-
-            "/ if cought while in the scheduler or event dispatcher,
-            "/ a modal dialog is not possible ...
-            "/ (therefore, abort & return does not makes sense)
-
-            Processor activeProcess isSystemProcess ifFalse:[
-                titles := #('abort') , titles.
-                actions := #(abort), actions.
-
-                badContext canReturn ifTrue:[
-                    titles := #('return') , titles.
-                    actions :=  #(return), actions.
-                ].
-            ].
-
-            fatal ifFalse:[
-                titles := titles, #('ignore').
-                actions := actions , #(ignore).
-            ].
-            action := Dialog choose:title
-                             labels:titles
-                             values:actions
-                             default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
-
-            "Dialog may fail (if system process), default action is debug"
-            action isEmptyOrNil ifTrue:[action := #debug].
-        ] ifFalse:[
-            action := #debug.
-        ].
-
-        action == #save ifTrue:[
-            ObjectMemory writeCrashImage
-        ].
-        action == #core ifTrue:[
-            Smalltalk fatalAbort
-        ].
-        action == #exit ifTrue:[
-            Smalltalk exit
-        ].
-        action == #return ifTrue:[
-            badContext return
-        ].
-        action == #abort ifTrue:[
-            AbortOperationRequest raise.
-        ].
-
-        action == #debug ifTrue:[
-            Debugger isNil ifTrue:[
-                ^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
-            ].
-            Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
-        ].
-        "action == #ignore"
+	"
+	 SIGBUS, SIGSEGV and SIGILL do not make sense to ignore (i.e. continue)
+	 since the system will retry the faulty instruction, which leads to
+	 another signal - to avoid frustration, better not offer this option.
+	"
+	fatal := OperatingSystem isFatalSignal:signalNumber.
+	fatal ifTrue:[
+	    (Debugger isNil or:[here isRecursive]) ifTrue:[
+		'Object [hard error]: signal ' errorPrint. signalNumber errorPrintCR.
+		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	    ].
+	    "
+	     a hard signal - go into debugger immediately
+	    "
+	    msg := 'OS-signal: ', name.
+
+	    "/ the IRQ-PC is passed as low-hi, to avoid the need
+	    "/ to allocate a LargeInteger in the VM during signal
+	    "/ time. I know, this is ugly.
+
+	    InterruptPcLow notNil ifTrue:[
+		pc := InterruptPcLow + (InterruptPcHi bitShift:((SmallInteger maxBits + 1) // 2)).
+		pc ~~ 0 ifTrue:[
+		    msg := msg , ' PC=' , (pc printStringRadix:16)
+		].
+	    ].
+	    InterruptAddrLow notNil ifTrue:[
+		addr := InterruptAddrLow + (InterruptAddrHi bitShift:((SmallInteger maxBits + 1) // 2)).
+		addr ~~ 0 ifTrue:[
+		    msg := msg , ' ADDR=' , (addr printStringRadix:16)
+		].
+	    ].
+	    Debugger enter:here withMessage:msg mayProceed:false.
+	    "unreachable"
+	    ^ nil.
+	].
+
+	"if possible, open an option box asking the user what do.
+	 Otherwise, start a debugger"
+	Dialog notNil ifTrue:[
+	    titles := #('save crash image' 'dump core' 'exit ST/X' 'debug').
+	    actions := #(save core exit debug).
+
+	    action := nil.
+	    title := 'OS Signal caught (' , name, ')'.
+	    title := (title , '\[in ST-process: ' , Processor activeProcess nameOrId ,']') withCRs.
+
+	    "/ if cought while in the scheduler or event dispatcher,
+	    "/ a modal dialog is not possible ...
+	    "/ (therefore, abort & return does not makes sense)
+
+	    Processor activeProcess isSystemProcess ifFalse:[
+		titles := #('abort') , titles.
+		actions := #(abort), actions.
+
+		badContext canReturn ifTrue:[
+		    titles := #('return') , titles.
+		    actions :=  #(return), actions.
+		].
+	    ].
+
+	    fatal ifFalse:[
+		titles := titles, #('ignore').
+		actions := actions , #(ignore).
+	    ].
+	    action := Dialog choose:title
+			     labels:titles
+			     values:actions
+			     default:(fatal ifTrue:[nil] ifFalse:[#ignore]).
+
+	    "Dialog may fail (if system process), default action is debug"
+	    action isEmptyOrNil ifTrue:[action := #debug].
+	] ifFalse:[
+	    action := #debug.
+	].
+
+	action == #save ifTrue:[
+	    ObjectMemory writeCrashImage
+	].
+	action == #core ifTrue:[
+	    Smalltalk fatalAbort
+	].
+	action == #exit ifTrue:[
+	    Smalltalk exit
+	].
+	action == #return ifTrue:[
+	    badContext return
+	].
+	action == #abort ifTrue:[
+	    AbortOperationRequest raise.
+	].
+
+	action == #debug ifTrue:[
+	    Debugger isNil ifTrue:[
+		^ self startMiniDebuggerOrExit:'OS-Signal (' , name, ')'.
+	    ].
+	    Debugger enter:here withMessage:('OS-Signal ', name) mayProceed:true.
+	].
+	"action == #ignore"
     ].
 
     "Modified: / 15-09-2011 / 16:38:14 / cg"
@@ -5135,10 +5182,10 @@
      Start a mini debugger or exit if none is present"
 
     MiniDebugger isNil ifTrue:[
-        "a system without debugging facilities (i.e. a standalone system)
-         output a message and exit."
-        ('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
-        OperatingSystem exit:99.
+	"a system without debugging facilities (i.e. a standalone system)
+	 output a message and exit."
+	('Object [error]: exit due to ', text, ' - and no debugger.') errorPrintCR.
+	OperatingSystem exit:99.
     ].
     MiniDebugger enterWithMessage:text mayProceed:true.
 !
@@ -5191,12 +5238,12 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-        struct inlineCache *pIlc;
+	struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
-       of default 4. This significantly reduces ILC misses. The code 
-       should be further optimized by remembering last selector index and 
-       try a first shot on that index. Another option is to use kind of 
-       hashing on lower bits of sel variable. However, a more detailed 
+       of default 4. This significantly reduces ILC misses. The code
+       should be further optimized by remembering last selector index and
+       try a first shot on that index. Another option is to use kind of
+       hashing on lower bits of sel variable. However, a more detailed
        statistical data should be gathered before doing further optimizations.
     */
 
@@ -5212,7 +5259,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5224,28 +5271,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform0_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND0ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform0_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND0ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform0_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
+	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc) );
     } else {
-        static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-        RETURN (_SEND0(self, aSelector, nil, &ilc0));
+	static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+	RETURN (_SEND0(self, aSelector, nil, &ilc0));
     }
 %}.
     ^ self perform:aSelector withArguments:#()
@@ -5258,7 +5305,7 @@
      to execute a method in ANY superclass of the receiver (not just the
      immediate superclass).
      Thus, it is (theoretically) possible to do
-         '5 perform:#< inClass:Magnitude withArguments:#(6)'
+	 '5 perform:#< inClass:Magnitude withArguments:#(6)'
      and evaluate Magnitudes compare method even if there was one in Number.
      This method is used by the interpreter to evaluate super sends
      and could be used for very special behavior (language extension ?).
@@ -5272,174 +5319,174 @@
     "
     myClass := self class.
     (myClass == aClass or:[myClass isSubclassOf:aClass]) ifFalse:[
-        self error:'lookup-class argument is not a superclass of the receiver'.
-        ^ nil
+	self error:'lookup-class argument is not a superclass of the receiver'.
+	^ nil
     ].
 %{
     REGISTER OBJ *argP;
     int nargs, i;
 
     if (__isArrayLike(argArray)) {
-        nargs = __arraySize(argArray);
-        argP = __arrayVal(argArray);
+	nargs = __arraySize(argArray);
+	argP = __arrayVal(argArray);
     } else {
-        if (__isNonNilObject(argArray)) {
-            static struct inlineCache ilcSize = __ILC0(@line+1);
-            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-            if (!__isSmallInteger(numberOfArgs))
-                goto bad;
-            nargs = __intVal(numberOfArgs);
-            argP = (OBJ *)(&a1);
-            for (i=1; i <= nargs; i++) {
-                *argP++ = __AT_(argArray, __mkSmallInteger(i));
-            }
-            argP = (OBJ *)(&a1);
-        } else {
-            nargs = 0;
-        }
+	if (__isNonNilObject(argArray)) {
+	    static struct inlineCache ilcSize = __ILC0(@line+1);
+	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+	    if (!__isSmallInteger(numberOfArgs))
+		goto bad;
+	    nargs = __intVal(numberOfArgs);
+	    argP = (OBJ *)(&a1);
+	    for (i=1; i <= nargs; i++) {
+		*argP++ = __AT_(argArray, __mkSmallInteger(i));
+	    }
+	    argP = (OBJ *)(&a1);
+	} else {
+	    nargs = 0;
+	}
     }
     switch (nargs) {
-        case 0:
-            {
-                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-                RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
-            }
-
-        case 1:
-            {
-                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-                RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
-            }
-
-        case 2:
-            {
-                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-                RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
-            }
-
-        case 3:
-            {
-                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-                RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
-                                argP[0], argP[1], argP[2]));
-            }
-
-        case 4:
-            {
-                static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-                RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
-                                argP[0], argP[1], argP[2], argP[3]));
-            }
-
-        case 5:
-            {
-                static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-                RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
-                                argP[0], argP[1], argP[2], argP[3], argP[4]));
-            }
-
-        case 6:
-            {
-                static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-                RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
-            }
-
-        case 7:
-            {
-                static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
-                RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6]));
-            }
-
-        case 8:
-            {
-                static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
-                RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6], argP[7]));
-            }
-
-        case 9:
-            {
-                static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
-                RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
-                                argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                argP[6], argP[7], argP[8]));
-            }
-
-        case 10:
-            {
-                static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
-                RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9]));
-            }
-
-        case 11:
-            {
-                static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
-                RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10]));
-            }
-
-        case 12:
-            {
-                static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
-                RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11]));
-            }
-
-        case 13:
-            {
-                static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
-                RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12]));
-            }
-
-        case 14:
-            {
-                static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
-                RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13]));
-            }
-
-        case 15:
-            {
-                static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
-                RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14]));
-            }
+	case 0:
+	    {
+		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+		RETURN ( _SEND0(self, aSelector, aClass, &ilc0));
+	    }
+
+	case 1:
+	    {
+		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+		RETURN ( _SEND1(self, aSelector, aClass, &ilc1, argP[0]));
+	    }
+
+	case 2:
+	    {
+		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+		RETURN ( _SEND2(self, aSelector, aClass, &ilc2, argP[0], argP[1]));
+	    }
+
+	case 3:
+	    {
+		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+		RETURN ( _SEND3(self, aSelector, aClass, &ilc3,
+				argP[0], argP[1], argP[2]));
+	    }
+
+	case 4:
+	    {
+		static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+		RETURN ( _SEND4(self, aSelector, aClass, &ilc4,
+				argP[0], argP[1], argP[2], argP[3]));
+	    }
+
+	case 5:
+	    {
+		static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+		RETURN ( _SEND5(self, aSelector, aClass, &ilc5,
+				argP[0], argP[1], argP[2], argP[3], argP[4]));
+	    }
+
+	case 6:
+	    {
+		static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+		RETURN ( _SEND6(self, aSelector, aClass, &ilc6,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5]));
+	    }
+
+	case 7:
+	    {
+		static struct inlineCache ilc7 = __DUMMYILCSELF7(@line+1);
+		RETURN ( _SEND7(self, aSelector, aClass, &ilc7,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6]));
+	    }
+
+	case 8:
+	    {
+		static struct inlineCache ilc8 = __DUMMYILCSELF8(@line+1);
+		RETURN ( _SEND8(self, aSelector, aClass, &ilc8,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6], argP[7]));
+	    }
+
+	case 9:
+	    {
+		static struct inlineCache ilc9 = __DUMMYILCSELF9(@line+1);
+		RETURN ( _SEND9(self, aSelector, aClass, &ilc9,
+				argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				argP[6], argP[7], argP[8]));
+	    }
+
+	case 10:
+	    {
+		static struct inlineCache ilc10 = __DUMMYILCSELF10(@line+1);
+		RETURN ( _SEND10(self, aSelector, aClass, &ilc10,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9]));
+	    }
+
+	case 11:
+	    {
+		static struct inlineCache ilc11 = __DUMMYILCSELF11(@line+1);
+		RETURN ( _SEND11(self, aSelector, aClass, &ilc11,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10]));
+	    }
+
+	case 12:
+	    {
+		static struct inlineCache ilc12 = __DUMMYILCSELF12(@line+1);
+		RETURN ( _SEND12(self, aSelector, aClass, &ilc12,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11]));
+	    }
+
+	case 13:
+	    {
+		static struct inlineCache ilc13 = __DUMMYILCSELF13(@line+1);
+		RETURN ( _SEND13(self, aSelector, aClass, &ilc13,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12]));
+	    }
+
+	case 14:
+	    {
+		static struct inlineCache ilc14 = __DUMMYILCSELF14(@line+1);
+		RETURN ( _SEND14(self, aSelector, aClass, &ilc14,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13]));
+	    }
+
+	case 15:
+	    {
+		static struct inlineCache ilc15 = __DUMMYILCSELF15(@line+1);
+		RETURN ( _SEND15(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14]));
+	    }
 
 #ifdef _SEND16
-        case 16:
-            {
-                static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
-                RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14], argP[15]));
-            }
+	case 16:
+	    {
+		static struct inlineCache ilc16 = __DUMMYILCSELF16(@line+1);
+		RETURN ( _SEND16(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14], argP[15]));
+	    }
 #endif
 #ifdef _SEND17
-        case 17:
-            {
-                static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
-                RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
-                                 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
-                                 argP[6], argP[7], argP[8], argP[9], argP[10],
-                                 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
-            }
+	case 17:
+	    {
+		static struct inlineCache ilc17 = __DUMMYILCSELF17(@line+1);
+		RETURN ( _SEND17(self, aSelector, aClass, &ilc15,
+				 argP[0], argP[1], argP[2], argP[3], argP[4], argP[5],
+				 argP[6], argP[7], argP[8], argP[9], argP[10],
+				 argP[11], argP[12], argP[13], argP[14], argP[15], argP[16]));
+	    }
 #endif
 
 
@@ -5459,7 +5506,7 @@
     REGISTER OBJ sel = aSelector;
 
     if (InterruptPending == nil) {
-        struct inlineCache *pIlc;
+	struct inlineCache *pIlc;
     /* JV @ 2010-22-07: To improve performance I use 256 ILCs instead
        of default 4. For details, see comment in perform: */
 
@@ -5475,7 +5522,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5487,28 +5534,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform1_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND1ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform1_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s with: arg --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND1ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform1_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
+	RETURN ( (*(pIlc->ilc_func))(self, sel, nil, pIlc, arg) );
     } else {
-        static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-        RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
+	static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+	RETURN (_SEND1(self, aSelector, nil, &ilc1, arg));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg)
@@ -5539,7 +5586,7 @@
 #define SEL_AND_ILC_INIT_256(l) SEL_AND_ILC_INIT_128(l) , SEL_AND_ILC_INIT_128(l)
 #define nilcs 256
 
-        static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
+	static struct { OBJ sel; struct inlineCache ilc; } sel_and_ilc[nilcs] = { SEL_AND_ILC_INIT_256(29) };
 
 #undef SEL_AND_ILC_INIT_1
 #undef SEL_AND_ILC_INIT_2
@@ -5551,28 +5598,28 @@
 #undef SEL_AND_ILC_INIT_128
 #undef SEL_AND_ILC_INIT_256
 
-        static flip = 0;
-        int i;
-        for (i = 0; i < nilcs; i++) {
-           if (sel == sel_and_ilc[i].sel) {
-                pIlc = &sel_and_ilc[i].ilc;
-                goto perform2_send_and_return;
-           }       
-        }
-        /*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
-        pIlc = &sel_and_ilc[flip].ilc;
-        sel_and_ilc[flip].sel = sel;
-        flip = (flip + 1) % nilcs;
-        pIlc->ilc_func = __SEND2ADDR__;
-        if (pIlc->ilc_poly) {
-             __flushPolyCache(pIlc->ilc_poly);
-            pIlc->ilc_poly = 0;
-        }
+	static flip = 0;
+	int i;
+	for (i = 0; i < nilcs; i++) {
+	   if (sel == sel_and_ilc[i].sel) {
+		pIlc = &sel_and_ilc[i].ilc;
+		goto perform2_send_and_return;
+	   }
+	}
+	/*printf("Object >> #perform: #%s with: with: --> no PIC found\n", __symbolVal(aSelector));*/
+	pIlc = &sel_and_ilc[flip].ilc;
+	sel_and_ilc[flip].sel = sel;
+	flip = (flip + 1) % nilcs;
+	pIlc->ilc_func = __SEND2ADDR__;
+	if (pIlc->ilc_poly) {
+	     __flushPolyCache(pIlc->ilc_poly);
+	    pIlc->ilc_poly = 0;
+	}
 perform2_send_and_return:
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2) );
     } else {
-        static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-        RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
+	static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+	RETURN (_SEND2(self, aSelector, nil, &ilc2, arg1, arg2));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2)
@@ -5591,32 +5638,32 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND3ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND3ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
     } else {
-        static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-        RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
+	static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+	RETURN (_SEND3(self, aSelector, nil, &ilc3, arg1, arg2, arg3));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3)
@@ -5635,34 +5682,34 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND4ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND4ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4) );
     } else {
-        static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
-        RETURN (_SEND4(self, aSelector, nil, &ilc4,
-                       arg1, arg2, arg3, arg4));
+	static struct inlineCache ilc4 = __DUMMYILCSELF4(@line+1);
+	RETURN (_SEND4(self, aSelector, nil, &ilc4,
+		       arg1, arg2, arg3, arg4));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4)
@@ -5681,38 +5728,38 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND5ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4, arg5) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND5ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4, arg5) );
     } else {
-        static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
-        RETURN (_SEND5(self, aSelector, nil, &ilc5,
-                       arg1, arg2, arg3, arg4, arg5));
+	static struct inlineCache ilc5 = __DUMMYILCSELF5(@line+1);
+	RETURN (_SEND5(self, aSelector, nil, &ilc5,
+		       arg1, arg2, arg3, arg4, arg5));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-                                                  with:arg5)
+						  with:arg5)
 
 !
 
@@ -5728,39 +5775,39 @@
     static flip = 0;
 
     if (InterruptPending == nil) {
-        if (aSelector != last_0) {
-            if (aSelector != last_1) {
-                if (flip) {
-                    pIlc = &ilc_0;
-                    flip = 0;
-                    last_0 = aSelector;
-                } else {
-                    pIlc = &ilc_1;
-                    flip = 1;
-                    last_1 = aSelector;
-                }
-                pIlc->ilc_func = __SEND6ADDR__;
-                if (pIlc->ilc_poly) {
-                    __flushPolyCache(pIlc->ilc_poly);
-                    pIlc->ilc_poly = 0;
-                }
-            } else {
-                pIlc = &ilc_1;
-            }
-        } else {
-            pIlc = &ilc_0;
-        }
-
-        RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
-                                     arg1, arg2, arg3, arg4, arg5, arg6) );
+	if (aSelector != last_0) {
+	    if (aSelector != last_1) {
+		if (flip) {
+		    pIlc = &ilc_0;
+		    flip = 0;
+		    last_0 = aSelector;
+		} else {
+		    pIlc = &ilc_1;
+		    flip = 1;
+		    last_1 = aSelector;
+		}
+		pIlc->ilc_func = __SEND6ADDR__;
+		if (pIlc->ilc_poly) {
+		    __flushPolyCache(pIlc->ilc_poly);
+		    pIlc->ilc_poly = 0;
+		}
+	    } else {
+		pIlc = &ilc_1;
+	    }
+	} else {
+	    pIlc = &ilc_0;
+	}
+
+	RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc,
+				     arg1, arg2, arg3, arg4, arg5, arg6) );
     } else {
-        static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
-        RETURN (_SEND6(self, aSelector, nil, &ilc6,
-                       arg1, arg2, arg3, arg4, arg5, arg6));
+	static struct inlineCache ilc6 = __DUMMYILCSELF6(@line+1);
+	RETURN (_SEND6(self, aSelector, nil, &ilc6,
+		       arg1, arg2, arg3, arg4, arg5, arg6));
     }
 %}.
     ^ self perform:aSelector withArguments:(Array with:arg1 with:arg2 with:arg3 with:arg4
-                                                  with:arg5 with:arg6)
+						  with:arg5 with:arg6)
 
 !
 
@@ -5776,398 +5823,398 @@
     OBJ l;
 
     if (__isArrayLike(argArray)) {
-        nargs = __arraySize(argArray);
-        argP = __arrayVal(argArray);
+	nargs = __arraySize(argArray);
+	argP = __arrayVal(argArray);
     } else {
-        if (__isNonNilObject(argArray)) {
-            static struct inlineCache ilcSize = __ILC0(@line);
-            int i;
-
-            numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
-            if (!__isSmallInteger(numberOfArgs))
-                goto bad;
-            nargs = __intVal(numberOfArgs);
-            argP = (OBJ *)(&a1);
-            for (i=1; i <= nargs; i++) {
-                *argP++ = __AT_(argArray, __mkSmallInteger(i));
-            }
-            argP = (OBJ *)(&a1);
-        } else {
-            nargs = 0;
-        }
+	if (__isNonNilObject(argArray)) {
+	    static struct inlineCache ilcSize = __ILC0(@line);
+	    int i;
+
+	    numberOfArgs = (*ilcSize.ilc_func)(argArray, @symbol(size), nil, &ilcSize);
+	    if (!__isSmallInteger(numberOfArgs))
+		goto bad;
+	    nargs = __intVal(numberOfArgs);
+	    argP = (OBJ *)(&a1);
+	    for (i=1; i <= nargs; i++) {
+		*argP++ = __AT_(argArray, __mkSmallInteger(i));
+	    }
+	    argP = (OBJ *)(&a1);
+	} else {
+	    nargs = 0;
+	}
     }
     switch (nargs) {
-        case 0:
-            if (InterruptPending == nil) {
-                static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
-                static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
-                static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
-                static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
-                static int flip0 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last0_0) {
-                    pIlc = &ilc0_0;
-                } else if (aSelector == last0_1) {
-                    pIlc = &ilc0_1;
-                } else if (aSelector == last0_2) {
-                    pIlc = &ilc0_2;
-                } else if (aSelector == last0_3) {
-                    pIlc = &ilc0_3;
-                } else {
-                    if (flip0 == 0) {
-                        pIlc = &ilc0_0;
-                        flip0 = 1;
-                        last0_0 = aSelector;
-                    } else if (flip0 == 1) {
-                        pIlc = &ilc0_1;
-                        flip0 = 2;
-                        last0_1 = aSelector;
-                    } else if (flip0 == 2) {
-                        pIlc = &ilc0_2;
-                        flip0 = 3;
-                        last0_2 = aSelector;
-                    } else {
-                        pIlc = &ilc0_3;
-                        flip0 = 0;
-                        last0_3 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND0ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
-            } else {
-                static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
-                RETURN (_SEND0(self, aSelector, nil, &ilc0));
-            }
-
-        case 1:
-            if (InterruptPending == nil) {
-                static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
-                static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
-                static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
-                static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
-                static int flip1 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last1_0) {
-                    pIlc = &ilc1_0;
-                } else if (aSelector == last1_1) {
-                    pIlc = &ilc1_1;
-                } else if (aSelector == last1_2) {
-                    pIlc = &ilc1_2;
-                } else if (aSelector == last1_3) {
-                    pIlc = &ilc1_3;
-                } else {
-                    if (flip1 == 0) {
-                        pIlc = &ilc1_0;
-                        flip1 = 1;
-                        last1_0 = aSelector;
-                    } else if (flip1 == 1) {
-                        pIlc = &ilc1_1;
-                        flip1 = 2;
-                        last1_1 = aSelector;
-                    } else if (flip1 == 2) {
-                        pIlc = &ilc1_2;
-                        flip1 = 3;
-                        last1_2 = aSelector;
-                    } else {
-                        pIlc = &ilc1_3;
-                        flip1 = 0;
-                        last1_3 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND1ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
-            } else {
-                static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
-                RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
-            }
-
-        case 2:
-            if (InterruptPending == nil) {
-                static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
-                static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
-                static int flip2 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last2_0) {
-                    pIlc = &ilc2_0;
-                } else if (aSelector == last2_1) {
-                    pIlc = &ilc2_1;
-                } else {
-                    if (flip2 == 0) {
-                        pIlc = &ilc2_0;
-                        flip2 = 1;
-                        last2_0 = aSelector;
-                    } else {
-                        pIlc = &ilc2_1;
-                        flip2 = 0;
-                        last2_1 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND2ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
-            } else {
-                static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
-                RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
-            }
-
-        case 3:
-            if (InterruptPending == nil) {
-                static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
-                static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
-                static int flip3 = 0;
-                struct inlineCache *pIlc;
-
-                if (aSelector == last3_0) {
-                    pIlc = &ilc3_0;
-                } else if (aSelector == last3_1) {
-                    pIlc = &ilc3_1;
-                } else {
-                    if (flip3 == 0) {
-                        pIlc = &ilc3_0;
-                        flip3 = 1;
-                        last3_0 = aSelector;
-                    } else {
-                        pIlc = &ilc3_1;
-                        flip3 = 0;
-                        last3_1 = aSelector;
-                    }
-
-                    pIlc->ilc_func = __SEND3ADDR__;
-                    if (pIlc->ilc_poly) {
-                        __flushPolyCache(pIlc->ilc_poly);
-                        pIlc->ilc_poly = 0;
-                    }
-                }
-                RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
-            } else {
-                static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
-                RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
-            }
-
-        case 4:
-            {
-                static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last4)) {
-                    ilc4.ilc_func = __SEND4ADDR__;
-                    if (ilc4.ilc_poly) {
-                        __flushPolyCache(ilc4.ilc_poly);
-                        ilc4.ilc_poly = 0;
-                    }
-                    last4 = aSelector;
-                }
-                RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
-                                                argP[0], argP[1], argP[2], argP[3]));
-            }
-
-        case 5:
-            {
-                static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last5)) {
-                    ilc5.ilc_func = __SEND5ADDR__;
-                    if (ilc5.ilc_poly) {
-                        __flushPolyCache(ilc5.ilc_poly);
-                        ilc5.ilc_poly = 0;
-                    }
-                    last5 = aSelector;
-                }
-                RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4]));
-            }
-
-        case 6:
-            {
-                static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last6)) {
-                    ilc6.ilc_func = __SEND6ADDR__;
-                    if (ilc6.ilc_poly) {
-                        __flushPolyCache(ilc6.ilc_poly);
-                        ilc6.ilc_poly = 0;
-                    }
-                    last6 = aSelector;
-                }
-                RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5]));
-            }
-
-        case 7:
-            {
-                static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last7)) {
-                    ilc7.ilc_func = __SEND7ADDR__;
-                    if (ilc7.ilc_poly) {
-                        __flushPolyCache(ilc7.ilc_poly);
-                        ilc7.ilc_poly = 0;
-                    }
-                    last7 = aSelector;
-                }
-                RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6]));
-            }
-
-        case 8:
-            {
-                static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last8)) {
-                    ilc8.ilc_func = __SEND8ADDR__;
-                    if (ilc8.ilc_poly) {
-                        __flushPolyCache(ilc8.ilc_poly);
-                        ilc8.ilc_poly = 0;
-                    }
-                    last8 = aSelector;
-                }
-                RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7]));
-            }
-
-        case 9:
-            {
-                static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last9)) {
-                    ilc9.ilc_func = __SEND9ADDR__;
-                    if (ilc9.ilc_poly) {
-                        __flushPolyCache(ilc9.ilc_poly);
-                        ilc9.ilc_poly = 0;
-                    }
-                    last9 = aSelector;
-                }
-                RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8]));
-            }
-
-        case 10:
-            {
-                static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last10)) {
-                    ilc10.ilc_func = __SEND10ADDR__;
-                    if (ilc10.ilc_poly) {
-                        __flushPolyCache(ilc10.ilc_poly);
-                        ilc10.ilc_poly = 0;
-                    }
-                    last10 = aSelector;
-                }
-                RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9]));
-            }
-
-        case 11:
-            {
-                static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last11)) {
-                    ilc11.ilc_func = __SEND11ADDR__;
-                    if (ilc11.ilc_poly) {
-                        __flushPolyCache(ilc11.ilc_poly);
-                        ilc11.ilc_poly = 0;
-                    }
-                    last11 = aSelector;
-                }
-                RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10]));
-            }
-
-        case 12:
-            {
-                static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last12)) {
-                    ilc12.ilc_func = __SEND12ADDR__;
-                    if (ilc12.ilc_poly) {
-                        __flushPolyCache(ilc12.ilc_poly);
-                        ilc12.ilc_poly = 0;
-                    }
-                    last12 = aSelector;
-                }
-                RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11]));
-            }
-
-        case 13:
-            {
-                static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last13)) {
-                    ilc13.ilc_func = __SEND13ADDR__;
-                    if (ilc13.ilc_poly) {
-                        __flushPolyCache(ilc13.ilc_poly);
-                        ilc13.ilc_poly = 0;
-                    }
-                    last13 = aSelector;
-                }
-                RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12]));
-            }
-
-        case 14:
-            {
-                static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last14)) {
-                    ilc14.ilc_func = __SEND14ADDR__;
-                    if (ilc14.ilc_poly) {
-                        __flushPolyCache(ilc14.ilc_poly);
-                        ilc14.ilc_poly = 0;
-                    }
-                    last14 = aSelector;
-                }
-                RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12], argP[13]));
-            }
-
-        case 15:
-            {
-                static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
-
-                if ((InterruptPending != nil) || (aSelector != last15)) {
-                    ilc15.ilc_func = __SEND15ADDR__;
-                    if (ilc15.ilc_poly) {
-                        __flushPolyCache(ilc15.ilc_poly);
-                        ilc15.ilc_poly = 0;
-                    }
-                    last15 = aSelector;
-                }
-                RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
-                                                argP[0], argP[1], argP[2], argP[3], argP[4],
-                                                argP[5], argP[6], argP[7], argP[8], argP[9],
-                                                argP[10], argP[11], argP[12], argP[13],
-                                                argP[14]));
-            }
+	case 0:
+	    if (InterruptPending == nil) {
+		static OBJ last0_0 = nil; static struct inlineCache ilc0_0 = __ILCPERF0(@line);
+		static OBJ last0_1 = nil; static struct inlineCache ilc0_1 = __ILCPERF0(@line);
+		static OBJ last0_2 = nil; static struct inlineCache ilc0_2 = __ILCPERF0(@line);
+		static OBJ last0_3 = nil; static struct inlineCache ilc0_3 = __ILCPERF0(@line);
+		static int flip0 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last0_0) {
+		    pIlc = &ilc0_0;
+		} else if (aSelector == last0_1) {
+		    pIlc = &ilc0_1;
+		} else if (aSelector == last0_2) {
+		    pIlc = &ilc0_2;
+		} else if (aSelector == last0_3) {
+		    pIlc = &ilc0_3;
+		} else {
+		    if (flip0 == 0) {
+			pIlc = &ilc0_0;
+			flip0 = 1;
+			last0_0 = aSelector;
+		    } else if (flip0 == 1) {
+			pIlc = &ilc0_1;
+			flip0 = 2;
+			last0_1 = aSelector;
+		    } else if (flip0 == 2) {
+			pIlc = &ilc0_2;
+			flip0 = 3;
+			last0_2 = aSelector;
+		    } else {
+			pIlc = &ilc0_3;
+			flip0 = 0;
+			last0_3 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND0ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc));
+	    } else {
+		static struct inlineCache ilc0 = __DUMMYILCSELF0(@line+1);
+		RETURN (_SEND0(self, aSelector, nil, &ilc0));
+	    }
+
+	case 1:
+	    if (InterruptPending == nil) {
+		static OBJ last1_0 = nil; static struct inlineCache ilc1_0 = __ILCPERF1(@line);
+		static OBJ last1_1 = nil; static struct inlineCache ilc1_1 = __ILCPERF1(@line);
+		static OBJ last1_2 = nil; static struct inlineCache ilc1_2 = __ILCPERF1(@line);
+		static OBJ last1_3 = nil; static struct inlineCache ilc1_3 = __ILCPERF1(@line);
+		static int flip1 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last1_0) {
+		    pIlc = &ilc1_0;
+		} else if (aSelector == last1_1) {
+		    pIlc = &ilc1_1;
+		} else if (aSelector == last1_2) {
+		    pIlc = &ilc1_2;
+		} else if (aSelector == last1_3) {
+		    pIlc = &ilc1_3;
+		} else {
+		    if (flip1 == 0) {
+			pIlc = &ilc1_0;
+			flip1 = 1;
+			last1_0 = aSelector;
+		    } else if (flip1 == 1) {
+			pIlc = &ilc1_1;
+			flip1 = 2;
+			last1_1 = aSelector;
+		    } else if (flip1 == 2) {
+			pIlc = &ilc1_2;
+			flip1 = 3;
+			last1_2 = aSelector;
+		    } else {
+			pIlc = &ilc1_3;
+			flip1 = 0;
+			last1_3 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND1ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0]));
+	    } else {
+		static struct inlineCache ilc1 = __DUMMYILCSELF1(@line+1);
+		RETURN (_SEND1(self, aSelector, nil, &ilc1, argP[0]));
+	    }
+
+	case 2:
+	    if (InterruptPending == nil) {
+		static OBJ last2_0 = nil; static struct inlineCache ilc2_0 = __ILCPERF2(@line);
+		static OBJ last2_1 = nil; static struct inlineCache ilc2_1 = __ILCPERF2(@line);
+		static int flip2 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last2_0) {
+		    pIlc = &ilc2_0;
+		} else if (aSelector == last2_1) {
+		    pIlc = &ilc2_1;
+		} else {
+		    if (flip2 == 0) {
+			pIlc = &ilc2_0;
+			flip2 = 1;
+			last2_0 = aSelector;
+		    } else {
+			pIlc = &ilc2_1;
+			flip2 = 0;
+			last2_1 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND2ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1]));
+	    } else {
+		static struct inlineCache ilc2 = __DUMMYILCSELF2(@line+1);
+		RETURN (_SEND2(self, aSelector, nil, &ilc2, argP[0], argP[1]));
+	    }
+
+	case 3:
+	    if (InterruptPending == nil) {
+		static OBJ last3_0 = nil; static struct inlineCache ilc3_0 = __ILCPERF3(@line);
+		static OBJ last3_1 = nil; static struct inlineCache ilc3_1 = __ILCPERF3(@line);
+		static int flip3 = 0;
+		struct inlineCache *pIlc;
+
+		if (aSelector == last3_0) {
+		    pIlc = &ilc3_0;
+		} else if (aSelector == last3_1) {
+		    pIlc = &ilc3_1;
+		} else {
+		    if (flip3 == 0) {
+			pIlc = &ilc3_0;
+			flip3 = 1;
+			last3_0 = aSelector;
+		    } else {
+			pIlc = &ilc3_1;
+			flip3 = 0;
+			last3_1 = aSelector;
+		    }
+
+		    pIlc->ilc_func = __SEND3ADDR__;
+		    if (pIlc->ilc_poly) {
+			__flushPolyCache(pIlc->ilc_poly);
+			pIlc->ilc_poly = 0;
+		    }
+		}
+		RETURN ((*pIlc->ilc_func)(self, aSelector, nil, pIlc, argP[0], argP[1], argP[2]));
+	    } else {
+		static struct inlineCache ilc3 = __DUMMYILCSELF3(@line+1);
+		RETURN (_SEND3(self, aSelector, nil, &ilc3, argP[0], argP[1], argP[2]));
+	    }
+
+	case 4:
+	    {
+		static OBJ last4 = nil; static struct inlineCache ilc4 = __ILCPERF4(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last4)) {
+		    ilc4.ilc_func = __SEND4ADDR__;
+		    if (ilc4.ilc_poly) {
+			__flushPolyCache(ilc4.ilc_poly);
+			ilc4.ilc_poly = 0;
+		    }
+		    last4 = aSelector;
+		}
+		RETURN ( (*ilc4.ilc_func)(self, aSelector, nil, &ilc4,
+						argP[0], argP[1], argP[2], argP[3]));
+	    }
+
+	case 5:
+	    {
+		static OBJ last5 = nil; static struct inlineCache ilc5 = __ILCPERF5(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last5)) {
+		    ilc5.ilc_func = __SEND5ADDR__;
+		    if (ilc5.ilc_poly) {
+			__flushPolyCache(ilc5.ilc_poly);
+			ilc5.ilc_poly = 0;
+		    }
+		    last5 = aSelector;
+		}
+		RETURN ( (*ilc5.ilc_func)(self, aSelector, nil, &ilc5,
+						argP[0], argP[1], argP[2], argP[3], argP[4]));
+	    }
+
+	case 6:
+	    {
+		static OBJ last6 = nil; static struct inlineCache ilc6 = __ILCPERF6(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last6)) {
+		    ilc6.ilc_func = __SEND6ADDR__;
+		    if (ilc6.ilc_poly) {
+			__flushPolyCache(ilc6.ilc_poly);
+			ilc6.ilc_poly = 0;
+		    }
+		    last6 = aSelector;
+		}
+		RETURN ( (*ilc6.ilc_func)(self, aSelector, nil, &ilc6,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5]));
+	    }
+
+	case 7:
+	    {
+		static OBJ last7 = nil; static struct inlineCache ilc7 = __ILCPERF7(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last7)) {
+		    ilc7.ilc_func = __SEND7ADDR__;
+		    if (ilc7.ilc_poly) {
+			__flushPolyCache(ilc7.ilc_poly);
+			ilc7.ilc_poly = 0;
+		    }
+		    last7 = aSelector;
+		}
+		RETURN ( (*ilc7.ilc_func)(self, aSelector, nil, &ilc7,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6]));
+	    }
+
+	case 8:
+	    {
+		static OBJ last8 = nil; static struct inlineCache ilc8 = __ILCPERF8(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last8)) {
+		    ilc8.ilc_func = __SEND8ADDR__;
+		    if (ilc8.ilc_poly) {
+			__flushPolyCache(ilc8.ilc_poly);
+			ilc8.ilc_poly = 0;
+		    }
+		    last8 = aSelector;
+		}
+		RETURN ( (*ilc8.ilc_func)(self, aSelector, nil, &ilc8,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7]));
+	    }
+
+	case 9:
+	    {
+		static OBJ last9 = nil; static struct inlineCache ilc9 = __ILCPERF9(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last9)) {
+		    ilc9.ilc_func = __SEND9ADDR__;
+		    if (ilc9.ilc_poly) {
+			__flushPolyCache(ilc9.ilc_poly);
+			ilc9.ilc_poly = 0;
+		    }
+		    last9 = aSelector;
+		}
+		RETURN ( (*ilc9.ilc_func)(self, aSelector, nil, &ilc9,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8]));
+	    }
+
+	case 10:
+	    {
+		static OBJ last10 = nil; static struct inlineCache ilc10 = __ILCPERF10(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last10)) {
+		    ilc10.ilc_func = __SEND10ADDR__;
+		    if (ilc10.ilc_poly) {
+			__flushPolyCache(ilc10.ilc_poly);
+			ilc10.ilc_poly = 0;
+		    }
+		    last10 = aSelector;
+		}
+		RETURN ( (*ilc10.ilc_func)(self, aSelector, nil, &ilc10,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9]));
+	    }
+
+	case 11:
+	    {
+		static OBJ last11 = nil; static struct inlineCache ilc11 = __ILCPERF11(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last11)) {
+		    ilc11.ilc_func = __SEND11ADDR__;
+		    if (ilc11.ilc_poly) {
+			__flushPolyCache(ilc11.ilc_poly);
+			ilc11.ilc_poly = 0;
+		    }
+		    last11 = aSelector;
+		}
+		RETURN ( (*ilc11.ilc_func)(self, aSelector, nil, &ilc11,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10]));
+	    }
+
+	case 12:
+	    {
+		static OBJ last12 = nil; static struct inlineCache ilc12 = __ILCPERF12(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last12)) {
+		    ilc12.ilc_func = __SEND12ADDR__;
+		    if (ilc12.ilc_poly) {
+			__flushPolyCache(ilc12.ilc_poly);
+			ilc12.ilc_poly = 0;
+		    }
+		    last12 = aSelector;
+		}
+		RETURN ( (*ilc12.ilc_func)(self, aSelector, nil, &ilc12,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11]));
+	    }
+
+	case 13:
+	    {
+		static OBJ last13 = nil; static struct inlineCache ilc13 = __ILCPERF13(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last13)) {
+		    ilc13.ilc_func = __SEND13ADDR__;
+		    if (ilc13.ilc_poly) {
+			__flushPolyCache(ilc13.ilc_poly);
+			ilc13.ilc_poly = 0;
+		    }
+		    last13 = aSelector;
+		}
+		RETURN ( (*ilc13.ilc_func)(self, aSelector, nil, &ilc13,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12]));
+	    }
+
+	case 14:
+	    {
+		static OBJ last14 = nil; static struct inlineCache ilc14 = __ILCPERF14(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last14)) {
+		    ilc14.ilc_func = __SEND14ADDR__;
+		    if (ilc14.ilc_poly) {
+			__flushPolyCache(ilc14.ilc_poly);
+			ilc14.ilc_poly = 0;
+		    }
+		    last14 = aSelector;
+		}
+		RETURN ( (*ilc14.ilc_func)(self, aSelector, nil, &ilc14,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12], argP[13]));
+	    }
+
+	case 15:
+	    {
+		static OBJ last15 = nil; static struct inlineCache ilc15 = __ILCPERF15(@line);
+
+		if ((InterruptPending != nil) || (aSelector != last15)) {
+		    ilc15.ilc_func = __SEND15ADDR__;
+		    if (ilc15.ilc_poly) {
+			__flushPolyCache(ilc15.ilc_poly);
+			ilc15.ilc_poly = 0;
+		    }
+		    last15 = aSelector;
+		}
+		RETURN ( (*ilc15.ilc_func)(self, aSelector, nil, &ilc15,
+						argP[0], argP[1], argP[2], argP[3], argP[4],
+						argP[5], argP[6], argP[7], argP[8], argP[9],
+						argP[10], argP[11], argP[12], argP[13],
+						argP[14]));
+	    }
     }
 bad:;
 %}.
@@ -6183,7 +6230,7 @@
      If the message expects an argument, pass arg."
 
     aSelector numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:arg
+	^ self perform:aSelector with:arg
     ].
     ^ self perform:aSelector
 
@@ -6208,10 +6255,10 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2.
 
@@ -6236,13 +6283,13 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3.
 
@@ -6267,16 +6314,16 @@
 
     numArgs := aSelector numArgs.
     numArgs == 0 ifTrue:[
-        ^ self perform:aSelector
+	^ self perform:aSelector
     ].
     numArgs == 1 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1
+	^ self perform:aSelector with:optionalArg1
     ].
     numArgs == 2 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2
     ].
     numArgs == 3 ifTrue:[
-        ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
+	^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3
     ].
     ^ self perform:aSelector with:optionalArg1 with:optionalArg2 with:optionalArg3 with:optionalArg4.
 
@@ -6298,8 +6345,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:#()
 
@@ -6328,8 +6375,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:argumentArray
 
@@ -6349,8 +6396,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg)
 
@@ -6370,8 +6417,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2)
 
@@ -6393,8 +6440,8 @@
      This is a non-object-oriented entry, applying a method
      in a functional way on a receiver.
      Warning:
-         Take care for the method to be appropriate for the
-         receiver - no checking is done by the VM."
+	 Take care for the method to be appropriate for the
+	 receiver - no checking is done by the VM."
 
     ^ aMethod valueWithReceiver:self arguments:(Array with:arg1 with:arg2 with:arg3)
 
@@ -6416,10 +6463,10 @@
 
     ret := 0.
     anAspectSymbol notNil ifTrue:[
-        ret := self perform:anAspectSymbol ifNotUnderstood:[0].
+	ret := self perform:anAspectSymbol ifNotUnderstood:[0].
     ].
     ret == 0 ifTrue:[
-        ^ self elementDescriptorForNonNilInstanceVariables
+	^ self elementDescriptorForNonNilInstanceVariables
     ].
     ^ ret.
 !
@@ -6452,16 +6499,16 @@
 
     instVarNames := theClass allInstVarNames.
     1 to:instSize do:[:i | |var|
-        var := self instVarAt:i.
-        (aBlock value:var) ifTrue:[
-            children add:((instVarNames at:i) -> var)
-        ]
+	var := self instVarAt:i.
+	(aBlock value:var) ifTrue:[
+	    children add:((instVarNames at:i) -> var)
+	]
     ].
 
     varSize ~~ 0 ifTrue:[
-        1 to:varSize do:[:i |
-            children add:(i -> (self basicAt:i))
-        ]
+	1 to:varSize do:[:i |
+	    children add:(i -> (self basicAt:i))
+	]
     ].
 
     ^ children.
@@ -6514,10 +6561,10 @@
     | cls|
 
     (cls := self class) == self ifTrue:[
-        ^ 'a funny object'
+	^ 'a funny object'
     ].
     cls isNil ifTrue:[
-        ^ 'a nil-classes object'        "/ cannot happen
+	^ 'a nil-classes object'        "/ cannot happen
     ].
     ^ cls nameWithArticle
 
@@ -6540,7 +6587,7 @@
         "/ the following allows errorPrint to be used during
         "/ the early init-phase, when no Stderr has been set up.
         "/ (depends on string to respond to #errorPrint)
-        self printString errorPrint.
+        self printString utf8Encoded errorPrint.
         ^ self.
     ].
 
@@ -6560,7 +6607,7 @@
         "/ the following allows errorPrintCR to be used during
         "/ the early init-phase, when no Stderr has been set up.
         "/ (depends on string to respond to #errorPrintCR)
-        self printString errorPrintCR.
+        self printString utf8Encoded errorPrintCR.
         ^ self.
     ].
 
@@ -6607,7 +6654,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-        self errorPrint
+	self errorPrint
     ]
 !
 
@@ -6620,7 +6667,7 @@
      These messages can be turned on/off by 'Object infoPrinting:true/false'"
 
     InfoPrinting == true ifTrue:[
-        self errorPrintCR
+	self errorPrintCR
     ]
 
     "Created: 20.5.1996 / 10:21:28 / cg"
@@ -6644,7 +6691,7 @@
     "/ (depends on string to respond to #print)
 
     Stdout isNil ifTrue:[
-        self printString print.
+        self printString utf8Encoded print.
         ^ self
     ].
     self printOn:Stdout
@@ -6660,7 +6707,7 @@
     "/ (depends on string to respond to #printCR)
 
     Stdout isNil ifTrue:[
-        self printString printCR.
+        self printString utf8Encoded printCR.
         ^ self
     ].
     self printOn:Stdout.
@@ -6889,9 +6936,9 @@
     |rslt|
 
     Error handle:[:ex |
-        rslt := exceptionBlock value
+	rslt := exceptionBlock value
     ] do:[
-        rslt := self printString
+	rslt := self printString
     ].
     ^ rslt
 !
@@ -7032,12 +7079,12 @@
     |myClass hasSemi sz "{ Class: SmallInteger }" |
 
     thisContext isRecursive ifTrue:[
-        Object recursiveStoreStringSignal raiseRequestWith:self.
-        'Object [error]: storeString of self referencing object (' errorPrint.
-        self class name errorPrint.
-        ')' errorPrintCR.
-        aStream nextPutAll:'#("recursive")'.
-        ^ self
+	Object recursiveStoreStringSignal raiseRequestWith:self.
+	'Object [error]: storeString of self referencing object (' errorPrint.
+	self class name errorPrint.
+	')' errorPrintCR.
+	aStream nextPutAll:'#("recursive")'.
+	^ self
     ].
 
     myClass := self class.
@@ -7046,34 +7093,34 @@
 
     hasSemi := false.
     myClass isVariable ifTrue:[
-        aStream nextPutAll:' basicNew:'.
-        self basicSize printOn:aStream
+	aStream nextPutAll:' basicNew:'.
+	self basicSize printOn:aStream
     ] ifFalse:[
-        aStream nextPutAll:' basicNew'
+	aStream nextPutAll:' basicNew'
     ].
 
     sz := myClass instSize.
     1 to:sz do:[:i |
-        aStream nextPutAll:' instVarAt:'.
-        i printOn:aStream.
-        aStream nextPutAll:' put:'.
-        (self instVarAt:i) storeOn:aStream.
-        aStream nextPut:$;.
-        hasSemi := true
+	aStream nextPutAll:' instVarAt:'.
+	i printOn:aStream.
+	aStream nextPutAll:' put:'.
+	(self instVarAt:i) storeOn:aStream.
+	aStream nextPut:$;.
+	hasSemi := true
     ].
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-        1 to:sz do:[:i |
-            aStream nextPutAll:' basicAt:'.
-            i printOn:aStream.
-            aStream nextPutAll:' put:'.
-            (self basicAt:i) storeOn:aStream.
-            aStream nextPut:$;.
-            hasSemi := true
-        ]
+	sz := self basicSize.
+	1 to:sz do:[:i |
+	    aStream nextPutAll:' basicAt:'.
+	    i printOn:aStream.
+	    aStream nextPutAll:' put:'.
+	    (self basicAt:i) storeOn:aStream.
+	    aStream nextPut:$;.
+	    hasSemi := true
+	]
     ].
     hasSemi ifTrue:[
-        aStream nextPutAll:' yourself'
+	aStream nextPutAll:' yourself'
     ].
     aStream nextPut:$).
 
@@ -7136,13 +7183,13 @@
     |stream|
 
     stream := Processor activeProcess isSystemProcess
-                        ifTrue:[Stderr]
-                        ifFalse:[Transcript].
+			ifTrue:[Stderr]
+			ifFalse:[Transcript].
     StreamError catch:[
-        aBlock value:stream.
+	aBlock value:stream.
     ].
     stream ~~ Stderr ifTrue:[
-        aBlock value:Stderr.
+	aBlock value:Stderr.
     ].
 
     "Created: / 21-04-2011 / 12:46:21 / cg"
@@ -7172,43 +7219,43 @@
     nInstBytes = OHDR_SIZE + __OBJS2BYTES__( __intVal(__ClassInstPtr(myClass)->c_ninstvars) );
 
     switch ((INT)(__ClassInstPtr(myClass)->c_flags) & __MASKSMALLINT(ARRAYMASK)) {
-        case __MASKSMALLINT(POINTERARRAY):
-        case __MASKSMALLINT(WKPOINTERARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
-
-        case __MASKSMALLINT(BYTEARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
-
-        case __MASKSMALLINT(FLOATARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
-
-        case __MASKSMALLINT(DOUBLEARRAY):
+	case __MASKSMALLINT(POINTERARRAY):
+	case __MASKSMALLINT(WKPOINTERARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(__BYTES2OBJS__(nbytes)) );
+
+	case __MASKSMALLINT(BYTEARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(char)) );
+
+	case __MASKSMALLINT(FLOATARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(float)) );
+
+	case __MASKSMALLINT(DOUBLEARRAY):
 #ifdef __NEED_DOUBLE_ALIGN
-            nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
+	    nInstBytes = (nInstBytes-1+__DOUBLE_ALIGN) &~ (__DOUBLE_ALIGN-1);
 #endif
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
-
-        case __MASKSMALLINT(WORDARRAY):
-        case __MASKSMALLINT(SWORDARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
-
-        case __MASKSMALLINT(LONGARRAY):
-        case __MASKSMALLINT(SLONGARRAY):
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
-
-        case __MASKSMALLINT(LONGLONGARRAY):
-        case __MASKSMALLINT(SLONGLONGARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes / sizeof(double)) );
+
+	case __MASKSMALLINT(WORDARRAY):
+	case __MASKSMALLINT(SWORDARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>1) ); /* notice the hardcoded 2 here - not sizeof(short) */
+
+	case __MASKSMALLINT(LONGARRAY):
+	case __MASKSMALLINT(SLONGARRAY):
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>2) ); /* notice the hardcoded 4 here - not sizeof(int) */
+
+	case __MASKSMALLINT(LONGLONGARRAY):
+	case __MASKSMALLINT(SLONGLONGARRAY):
 #ifdef __NEED_LONGLONG_ALIGN
-            nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
+	    nInstBytes = (nInstBytes-1+__LONGLONG_ALIGN) &~ (__LONGLONG_ALIGN-1);
 #endif
-            nbytes -= nInstBytes;
-            RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
+	    nbytes -= nInstBytes;
+	    RETURN ( __mkSmallInteger(nbytes>>3) ); /* notice the hardcoded 8 here - not sizeof(long long) */
     }
 %}.
     ^ 0
@@ -7225,43 +7272,43 @@
 
     myClass := self class.
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            myClass isBytes ifTrue:[
-                ^ self basicSize.
-            ].
-            myClass isWords ifTrue:[
-                ^ self basicSize * 2.
-            ].
-            myClass isSignedWords ifTrue:[
-                ^ self basicSize * 2.
-            ].
-            myClass isLongs ifTrue:[
-                ^ self basicSize * 4.
-            ].
-            myClass isSignedLongs ifTrue:[
-                ^ self basicSize * 4.
-            ].
-            myClass isLongLongs ifTrue:[
-                ^ self basicSize * 8.
-            ].
-            myClass isSignedLongLongs ifTrue:[
-                ^ self basicSize * 8.
-            ].
-            myClass isFloats ifTrue:[
-                ^ self basicSize * (ExternalBytes sizeofFloat)
-            ].
-            myClass isDoubles ifTrue:[
-                ^ self basicSize * (ExternalBytes sizeofDouble)
-            ].
-            self error:'unknown variable size class species'.
-        ]
+	myClass isPointers ifFalse:[
+	    myClass isBytes ifTrue:[
+		^ self basicSize.
+	    ].
+	    myClass isWords ifTrue:[
+		^ self basicSize * 2.
+	    ].
+	    myClass isSignedWords ifTrue:[
+		^ self basicSize * 2.
+	    ].
+	    myClass isLongs ifTrue:[
+		^ self basicSize * 4.
+	    ].
+	    myClass isSignedLongs ifTrue:[
+		^ self basicSize * 4.
+	    ].
+	    myClass isLongLongs ifTrue:[
+		^ self basicSize * 8.
+	    ].
+	    myClass isSignedLongLongs ifTrue:[
+		^ self basicSize * 8.
+	    ].
+	    myClass isFloats ifTrue:[
+		^ self basicSize * (ExternalBytes sizeofFloat)
+	    ].
+	    myClass isDoubles ifTrue:[
+		^ self basicSize * (ExternalBytes sizeofDouble)
+	    ].
+	    self error:'unknown variable size class species'.
+	]
     ].
     ^ 0
 
     "
      Point new byteSize
-     'hello' byteSize      
-     'hello' asUnicode16String byteSize      
+     'hello' byteSize
+     'hello' asUnicode16String byteSize
      (ByteArray with:1 with:2) byteSize
      (FloatArray with:1.5) byteSize
      (DoubleArray with:1.5) byteSize
@@ -7296,7 +7343,7 @@
 %{  /* NOCONTEXT */
 
     if (__lookup(__Class(self), aSelector) == nil) {
-        RETURN ( false );
+	RETURN ( false );
     }
     RETURN ( true );
 %}
@@ -7337,6 +7384,7 @@
     ^ self
 ! !
 
+
 !Object methodsFor:'secure message sending'!
 
 ?: selector
@@ -7402,17 +7450,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ].
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	].
     ] do:[
-        val := self perform:aSelector.
-        ok := true.
+	val := self perform:aSelector.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7436,17 +7484,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector with:argument.
-        ok := true.
+	val := self perform:aSelector with:argument.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7473,17 +7521,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector with:arg1 with:arg2.
-        ok := true.
+	val := self perform:aSelector with:arg1 with:arg2.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 !
@@ -7501,17 +7549,17 @@
     |val ok|
 
     MessageNotUnderstood handle:[:ex |
-        "/ reject, if the bad message is not the one
-        "/ we have sent originally.
-        (ex selector == aSelector and:[ex receiver == self]) ifFalse:[
-            ex reject
-        ]
+	"/ reject, if the bad message is not the one
+	"/ we have sent originally.
+	(ex selector == aSelector and:[ex receiver == self]) ifFalse:[
+	    ex reject
+	]
     ] do:[
-        val := self perform:aSelector withArguments:argumentArray.
-        ok := true.
+	val := self perform:aSelector withArguments:argumentArray.
+	ok := true.
     ].
     ok isNil ifTrue:[
-        ^ exceptionBlock value
+	^ exceptionBlock value
     ].
     ^ val
 
@@ -7567,148 +7615,148 @@
     int nInsts, inst;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     if (__isArrayLike(aCollection)) {
-        int nObjs = __arraySize(aCollection);
-        char *minAddr = 0, *maxAddr = 0;
-
-        if (nObjs == 0) {
-            RETURN (false);
-        }
-
-        /*
-         * a little optimization: use the fact that all old objects
-         * refering to a new object are on the remSet; if I am not,
-         * a trivial reject is possible, if all objects are newbees.
-         * as a side effect, gather min/max addresses
-         */
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int allNewBees = 1;
-            int i;
-
-            minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
-            maxAddr = minAddr;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-
-                if (__isNonNilObject(anObject)) {
-                    int spc;
-
-                    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
-                        allNewBees = 0;
-                    }
-                }
-
-                if ((char *)anObject < minAddr) {
-                    minAddr = (char *)anObject;
-                } else if ((char *)anObject > maxAddr) {
-                    maxAddr = (char *)anObject;
-                }
-            }
-            if (allNewBees) {
-                RETURN (false);
-            }
-        }
-
-        /*
-         * fetch min/max in searchList (if not already done)
-         */
-        if (minAddr == 0) {
-            int i;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                if ((char *)anObject < minAddr) {
-                    minAddr = (char *)anObject;
-                } else if ((char *)anObject > maxAddr) {
-                    maxAddr = (char *)anObject;
-                }
-            }
-        }
-
-        cls = __qClass(self);
-        if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
+	int nObjs = __arraySize(aCollection);
+	char *minAddr = 0, *maxAddr = 0;
+
+	if (nObjs == 0) {
+	    RETURN (false);
+	}
+
+	/*
+	 * a little optimization: use the fact that all old objects
+	 * refering to a new object are on the remSet; if I am not,
+	 * a trivial reject is possible, if all objects are newbees.
+	 * as a side effect, gather min/max addresses
+	 */
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int allNewBees = 1;
+	    int i;
+
+	    minAddr = (char *)(__ArrayInstPtr(aCollection)->a_element[0]);
+	    maxAddr = minAddr;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+
+		if (__isNonNilObject(anObject)) {
+		    int spc;
+
+		    if (((spc = __qSpace(anObject)) != NEWSPACE) && (spc != SURVSPACE)) {
+			allNewBees = 0;
+		    }
+		}
+
+		if ((char *)anObject < minAddr) {
+		    minAddr = (char *)anObject;
+		} else if ((char *)anObject > maxAddr) {
+		    maxAddr = (char *)anObject;
+		}
+	    }
+	    if (allNewBees) {
+		RETURN (false);
+	    }
+	}
+
+	/*
+	 * fetch min/max in searchList (if not already done)
+	 */
+	if (minAddr == 0) {
+	    int i;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		if ((char *)anObject < minAddr) {
+		    minAddr = (char *)anObject;
+		} else if ((char *)anObject > maxAddr) {
+		    maxAddr = (char *)anObject;
+		}
+	    }
+	}
+
+	cls = __qClass(self);
+	if (((char *)cls >= minAddr) && ((char *)cls <= maxAddr)) {
 #if defined(memsrch4)
-            if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
-                RETURN (true);
-            }
+	    if (memsrch4(__arrayVal(aCollection), (INT)cls, nObjs)) {
+		RETURN (true);
+	    }
 #else
-            int i;
-
-            for (i=0; i<nObjs; i++) {
-                OBJ anObject;
-
-                anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                if (cls == anObject) {
-                    RETURN (true);
-                }
-            }
+	    int i;
+
+	    for (i=0; i<nObjs; i++) {
+		OBJ anObject;
+
+		anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		if (cls == anObject) {
+		    RETURN (true);
+		}
+	    }
 #endif /* memsrch4 */
-        }
-
-        flags = __ClassInstPtr(cls)->c_flags;
-        if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-            nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
-        } else {
-            nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
-        }
-        if (! nInsts) {
-            RETURN (false);
-        }
-
-        if (nObjs == 1) {
-            /* better reverse the loop */
-            OBJ anObject;
-
-            anObject = __ArrayInstPtr(aCollection)->a_element[0];
+	}
+
+	flags = __ClassInstPtr(cls)->c_flags;
+	if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
+	    nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	} else {
+	    nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	}
+	if (! nInsts) {
+	    RETURN (false);
+	}
+
+	if (nObjs == 1) {
+	    /* better reverse the loop */
+	    OBJ anObject;
+
+	    anObject = __ArrayInstPtr(aCollection)->a_element[0];
 #if defined(memsrch4)
-            if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-                RETURN (true);
-            }
+	    if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
+		RETURN (true);
+	    }
 #else
-            for (inst=0; inst<nInsts; inst++) {
-                if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
-                    RETURN (true);
-                }
-            }
+	    for (inst=0; inst<nInsts; inst++) {
+		if ((__InstPtr(self)->i_instvars[inst]) == anObject) {
+		    RETURN (true);
+		}
+	    }
 #endif
-            RETURN (false);
-        }
-
-        for (inst=0; inst<nInsts; inst++) {
-            OBJ instVar = __InstPtr(self)->i_instvars[inst];
-            int i;
-
-            if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
+	    RETURN (false);
+	}
+
+	for (inst=0; inst<nInsts; inst++) {
+	    OBJ instVar = __InstPtr(self)->i_instvars[inst];
+	    int i;
+
+	    if (((char *)instVar >= minAddr) && ((char *)instVar <= maxAddr)) {
 #if defined(memsrch4)
-                if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
-                    RETURN (true);
-                }
+		if (memsrch4(__arrayVal(aCollection), (INT)instVar, nObjs)) {
+		    RETURN (true);
+		}
 #else
-                for (i=0; i<nObjs; i++) {
-                    OBJ anObject;
-
-                    anObject = __ArrayInstPtr(aCollection)->a_element[i];
-                    if (instVar == anObject) {
-                        RETURN (true);
-                    }
-                }
+		for (i=0; i<nObjs; i++) {
+		    OBJ anObject;
+
+		    anObject = __ArrayInstPtr(aCollection)->a_element[i];
+		    if (instVar == anObject) {
+			RETURN (true);
+		    }
+		}
 #endif /* memsrch4 */
-            }
-        }
-        RETURN (false);
+	    }
+	}
+	RETURN (false);
     }
 %}.
 
     aCollection do:[:el |
-        (self referencesObject:el) ifTrue:[^ true].
+	(self referencesObject:el) ifTrue:[^ true].
     ].
     ^ false
 !
@@ -7728,19 +7776,19 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        ((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
+	((self instVarAt:i) isKindOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            "no need to search in non pointer fields"
-            ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
-        ].
-        numInst := self basicSize.
-        1 to:numInst do:[:i |
-            ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
-        ]
+	myClass isPointers ifFalse:[
+	    "no need to search in non pointer fields"
+	    ((aClass == Number) or:[aClass isSubclassOf:Number]) ifFalse:[^ false].
+	].
+	numInst := self basicSize.
+	1 to:numInst do:[:i |
+	    ((self basicAt:i) isKindOf:aClass) ifTrue:[^ true]
+	]
     ].
     ^ false
 
@@ -7759,21 +7807,21 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        inst := self instVarAt:i.
-        (checkBlock value:inst) ifTrue:[actionBlock value:inst].
+	inst := self instVarAt:i.
+	(checkBlock value:inst) ifTrue:[actionBlock value:inst].
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifTrue:[
-            "no need to search in non pointer fields"
-
-            numInst := self basicSize.
-            1 to:numInst do:[:i |
-                inst := self basicAt:i.
-                (checkBlock value:inst) ifTrue:[actionBlock value:inst].
-            ]
-        ]
+	myClass isPointers ifTrue:[
+	    "no need to search in non pointer fields"
+
+	    numInst := self basicSize.
+	    1 to:numInst do:[:i |
+		inst := self basicAt:i.
+		(checkBlock value:inst) ifTrue:[actionBlock value:inst].
+	    ]
+	]
     ].
 
     "
@@ -7797,24 +7845,24 @@
     "check the instance variables"
     numInst := myClass instSize.
     1 to:numInst do:[:i |
-        ((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
+	((self instVarAt:i) isMemberOf:aClass) ifTrue:[^ true]
     ].
 
     "check the indexed variables"
     myClass isVariable ifTrue:[
-        myClass isPointers ifFalse:[
-            "no need to search in non-pointer indexed fields"
-            myClass isLongs ifTrue:[
-                (aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
-            ] ifFalse:[
-                myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
-                ^ aClass == SmallInteger
-            ]
-        ].
-        numInst := self basicSize.
-        1 to:numInst do:[:i |
-            ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
-        ]
+	myClass isPointers ifFalse:[
+	    "no need to search in non-pointer indexed fields"
+	    myClass isLongs ifTrue:[
+		(aClass == SmallInteger or:[aClass == LargeInteger]) ifFalse:[^ false].
+	    ] ifFalse:[
+		myClass isFloatsOrDoubles ifTrue:[^ aClass == Float].
+		^ aClass == SmallInteger
+	    ]
+	].
+	numInst := self basicSize.
+	1 to:numInst do:[:i |
+	    ((self basicAt:i) isMemberOf:aClass) ifTrue:[^ true]
+	]
     ].
     ^ false
 
@@ -7834,7 +7882,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     /*
@@ -7843,38 +7891,38 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int spc;
-
-            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-                RETURN (false);
-            }
-        }
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int spc;
+
+	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+		RETURN (false);
+	    }
+	}
     }
 
     cls = __qClass(self);
     if (cls == anObject) {
-        RETURN (true);
+	RETURN (true);
     }
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-        RETURN (false);
+	RETURN (false);
     }
 #if defined(memsrch4)
     if (memsrch4(__InstPtr(self)->i_instvars, (INT)anObject, nInsts)) {
-        RETURN (true);
+	RETURN (true);
     }
 #else
     for (i=0; i<nInsts; i++) {
-        if (__InstPtr(self)->i_instvars[i] == anObject) {
-            RETURN (true);
-        }
+	if (__InstPtr(self)->i_instvars[i] == anObject) {
+	    RETURN (true);
+	}
     }
 #endif /* memsrch4 */
 
@@ -7939,6 +7987,7 @@
     "
 ! !
 
+
 !Object methodsFor:'synchronized evaluation'!
 
 freeSynchronizationSemaphore
@@ -7949,8 +7998,8 @@
 
     sema := self synchronizationSemaphore.
     sema notNil ifTrue:[
-        sema wait.              "/ get lock
-        self synchronizationSemaphore:nil.
+	sema wait.              "/ get lock
+	self synchronizationSemaphore:nil.
     ].
 
     "
@@ -7981,10 +8030,10 @@
      subclasses may redefine this method"
 
     aSemaphore isNil ifTrue:[
-        "/ remove Semaphore
-        SynchronizationSemaphores removeKey:self ifAbsent:nil.
+	"/ remove Semaphore
+	SynchronizationSemaphores removeKey:self ifAbsent:nil.
     ] ifFalse:[
-        SynchronizationSemaphores at:self put:aSemaphore.
+	SynchronizationSemaphores at:self put:aSemaphore.
     ].
 
     "Modified: 28.1.1997 / 19:37:48 / stefan"
@@ -7999,8 +8048,8 @@
 
     sema := self synchronizationSemaphore.
     sema isNil ifTrue:[
-        sema := RecursionLock new name:self className.
-        self synchronizationSemaphore:sema.
+	sema := RecursionLock new name:self className.
+	self synchronizationSemaphore:sema.
     ].
 
     wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
@@ -8039,7 +8088,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (self);
+	RETURN (self);
     }
     __beImmutable(self);
 %}
@@ -8050,7 +8099,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (self);
+	RETURN (self);
     }
     __beMutable(self);
 %}
@@ -8074,7 +8123,7 @@
       - the Collection-classes have been rewritten to not use it.)"
 %{
     if (__primBecome(self, anotherObject)) {
-        RETURN ( self );
+	RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8090,7 +8139,7 @@
 
 %{
     if (__primBecomeNil(self)) {
-        RETURN ( nil );
+	RETURN ( nil );
     }
 %}.
     self primitiveFailed
@@ -8111,7 +8160,7 @@
      or nil, or is a context of a living method (i.e. one that has not already returned)."
 %{
     if (__primBecomeSameAs(self, anotherObject)) {
-        RETURN ( self );
+	RETURN ( self );
     }
 %}.
     self primitiveFailed
@@ -8132,72 +8181,72 @@
     "check for UndefinedObject/SmallInteger receiver or newClass"
 %{
     {
-        OBJ other = otherClass;
-
-        if (__isNonNilObject(self)
-         && __isNonNilObject(other)
-         && (other != UndefinedObject)
-         && (other != SmallInteger)) {
-            ok = true;
-        } else {
-            ok = false;
-        }
+	OBJ other = otherClass;
+
+	if (__isNonNilObject(self)
+	 && __isNonNilObject(other)
+	 && (other != UndefinedObject)
+	 && (other != SmallInteger)) {
+	    ok = true;
+	} else {
+	    ok = false;
+	}
     }
 %}.
     ok ifTrue:[
-        ok := false.
-        myClass := self class.
-        myClass flags == otherClass flags ifTrue:[
-            myClass instSize == otherClass instSize ifTrue:[
-                "same instance layout and types: its ok to do it"
-                ok := true.
-            ] ifFalse:[
-                myClass isPointers ifTrue:[
-                    myClass isVariable ifTrue:[
-                        ok := true
-                    ]
-                ]
-            ]
-        ] ifFalse:[
-            myClass isPointers ifTrue:[
-                "if newClass is a variable class, with instSize <= my instsize,
-                 we can do it (effectively mapping additional instvars into the
-                 variable part) - usefulness is questionable, though"
-
-                otherClass isPointers ifTrue:[
-                    otherClass isVariable ifTrue:[
-                        otherClass instSize <= (myClass instSize + self basicSize)
-                        ifTrue:[
-                            ok := true
-                        ]
-                    ] ifFalse:[
-                        otherClass instSize == (myClass instSize + self basicSize)
-                        ifTrue:[
-                            ok := true
-                        ]
-                    ]
-                ] ifFalse:[
-                    "it does not make sense to convert pointers to bytes ..."
-                ]
-            ] ifFalse:[
-                "does it make sense, to convert bits ?"
-                "could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
-                (myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
-                    ok := true
-                ]
-            ]
-        ]
+	ok := false.
+	myClass := self class.
+	myClass flags == otherClass flags ifTrue:[
+	    myClass instSize == otherClass instSize ifTrue:[
+		"same instance layout and types: its ok to do it"
+		ok := true.
+	    ] ifFalse:[
+		myClass isPointers ifTrue:[
+		    myClass isVariable ifTrue:[
+			ok := true
+		    ]
+		]
+	    ]
+	] ifFalse:[
+	    myClass isPointers ifTrue:[
+		"if newClass is a variable class, with instSize <= my instsize,
+		 we can do it (effectively mapping additional instvars into the
+		 variable part) - usefulness is questionable, though"
+
+		otherClass isPointers ifTrue:[
+		    otherClass isVariable ifTrue:[
+			otherClass instSize <= (myClass instSize + self basicSize)
+			ifTrue:[
+			    ok := true
+			]
+		    ] ifFalse:[
+			otherClass instSize == (myClass instSize + self basicSize)
+			ifTrue:[
+			    ok := true
+			]
+		    ]
+		] ifFalse:[
+		    "it does not make sense to convert pointers to bytes ..."
+		]
+	    ] ifFalse:[
+		"does it make sense, to convert bits ?"
+		"could allow byteArray->wordArray->longArray->floatArray->doubleArray here ..."
+		(myClass isBitsExtended and:[otherClass isBitsExtended]) ifTrue:[
+		    ok := true
+		]
+	    ]
+	]
     ].
     ok ifTrue:[
-        "now, change the receivers class ..."
+	"now, change the receivers class ..."
 %{
-        {
-            OBJ me = self;
-
-            __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
-            __STORE(me, otherClass);
-            RETURN (me);
-        }
+	{
+	    OBJ me = self;
+
+	    __objPtr(me)->o_class = (CLASS_OBJ)otherClass;
+	    __STORE(me, otherClass);
+	    RETURN (me);
+	}
 %}.
     ].
 
@@ -8225,7 +8274,7 @@
 
 %{  /* NOCONTEXT */
     if (! __isNonNilObject(self)) {
-        RETURN (true);
+	RETURN (true);
     }
     RETURN (__isImmutable(self) ? true : false);
 %}
@@ -8241,7 +8290,7 @@
     int nInsts, i;
 
     if (! __isNonNilObject(self)) {
-        RETURN (false);
+	RETURN (false);
     }
 
     /*
@@ -8250,33 +8299,33 @@
      * a trivial reject is possible, if anObject is a newbee
      */
     if (__isNonNilObject(anObject)) {
-        if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
-            int spc;
-
-            if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
-                RETURN (false);
-            }
-        }
+	if ((__qSpace(self) <= OLDSPACE) && !__isRemembered(self)) {
+	    int spc;
+
+	    if (((spc = __qSpace(anObject)) == NEWSPACE) || (spc == SURVSPACE)) {
+		RETURN (false);
+	    }
+	}
     }
 
     cls = __qClass(self);
 
     flags = __ClassInstPtr(cls)->c_flags;
     if (((INT)flags & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(POINTERARRAY)) {
-        nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
+	nInsts = __BYTES2OBJS__(__qSize(self) - OHDR_SIZE);
     } else {
-        nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
+	nInsts = __intVal(__ClassInstPtr(cls)->c_ninstvars);
     }
     if (! nInsts) {
-        RETURN (false);
+	RETURN (false);
     }
     anyChange = false;
     for (i=0; i<nInsts; i++) {
-        if (__InstPtr(self)->i_instvars[i] == anObject) {
-            __InstPtr(self)->i_instvars[i] = newRef;
-            __STORE(self, newRef);
-            anyChange = true;
-        }
+	if (__InstPtr(self)->i_instvars[i] == anObject) {
+	    __InstPtr(self)->i_instvars[i] = newRef;
+	    __STORE(self, newRef);
+	    anyChange = true;
+	}
     }
     RETURN (anyChange);
 %}.
@@ -8300,27 +8349,27 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-          foo ? bar
+	  foo ? bar
       is the same as:
-          (foo isNil ifTrue:[bar] ifFalse:[foo])
+	  (foo isNil ifTrue:[bar] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-          [
-              |t1 t2|
-
-              t1 := foo.
-              t2 := bar.
-              t1 isNil ifTrue:[t2] ifFalse:[t1]
-          ] value
+	  [
+	      |t1 t2|
+
+	      t1 := foo.
+	      t2 := bar.
+	      t1 isNil ifTrue:[t2] ifFalse:[t1]
+	  ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-          foo := arg ? #defaultValue
+	  foo := arg ? #defaultValue
 
       Note: this method should never be redefined in classes other than UndefinedObject.
       Notice:
-         This method is open coded (inlined) by the compiler(s)
-         - redefining it may not work as expected."
+	 This method is open coded (inlined) by the compiler(s)
+	 - redefining it may not work as expected."
 
     ^ self
 
@@ -8343,21 +8392,21 @@
       the recevier is retuned here.
 
       Thus, if foo and bar are simple variables or constants,
-          foo ?? bar
+	  foo ?? bar
       is the same as:
-          (foo isNil ifTrue:[bar value] ifFalse:[foo])
+	  (foo isNil ifTrue:[bar value] ifFalse:[foo])
 
       if they are message sends, the equivalent code is:
-          [
-              |t t2|
-
-              t := foo.
-              t isNil ifTrue:[bar value] ifFalse:[t]
-          ] value
+	  [
+	      |t t2|
+
+	      t := foo.
+	      t isNil ifTrue:[bar value] ifFalse:[t]
+	  ] value
 
       Can be used to provide defaultValues to variables,
       as in:
-          foo := arg ?? [ self computeDefault ]
+	  foo := arg ?? [ self computeDefault ]
 
       Note: this method should never be redefined in classes other than UndefinedObject.
      "
@@ -8382,8 +8431,8 @@
      This is much like #?, but sends #value to the argument in case of a nil
      receiver.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ self
 !
@@ -8392,8 +8441,8 @@
     "return the value of the first arg, if I am nil,
      the result from evaluating the 2nd argument, if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8403,8 +8452,8 @@
     "return myself if nil, or the result from evaluating the argument,
      if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ aBlockOrValue value
 
@@ -8414,8 +8463,8 @@
     "return the value of the 2nd arg, if I am nil,
      the result from evaluating the 1st argument, if I am not nil.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ notNilBlockOrValue value
 
@@ -8771,21 +8820,21 @@
     "return true, if the receiver is an instance of aClass or one of its
      subclasses, false otherwise.
      Advice:
-        use of this to check objects for certain attributes/protocoll should
-        be avoided; it limits the reusability of your classes by limiting use
-        to instances of certain classes and fences you into a specific inheritance
-        hierarchy.
-        Use check-methods to check an object for a certain attributes/protocol
-        (such as #isXXXX, #respondsTo: or #isNumber).
-
-        Using #isKindOf: is considered BAD STYLE.
+	use of this to check objects for certain attributes/protocoll should
+	be avoided; it limits the reusability of your classes by limiting use
+	to instances of certain classes and fences you into a specific inheritance
+	hierarchy.
+	Use check-methods to check an object for a certain attributes/protocol
+	(such as #isXXXX, #respondsTo: or #isNumber).
+
+	Using #isKindOf: is considered BAD STYLE.
 
      Advice2:
-        Be aware, that using an #isXXX method is usually much faster than
-        using #isKindOf:; because isKindOf: has to walk up all the superclass
-        hierarchy, comparing every class on the way.
-        Due to caching in the VM, a call to #isXXX is normally reached via
-        a single function call.
+	Be aware, that using an #isXXX method is usually much faster than
+	using #isKindOf:; because isKindOf: has to walk up all the superclass
+	hierarchy, comparing every class on the way.
+	Due to caching in the VM, a call to #isXXX is normally reached via
+	a single function call.
      "
 
 %{  /* NOCONTEXT */
@@ -8793,10 +8842,10 @@
 
     thisClass = __Class(self);
     while (thisClass != nil) {
-        if (thisClass == aClass) {
-            RETURN ( true );
-        }
-        thisClass = __ClassInstPtr(thisClass)->c_superclass;
+	if (thisClass == aClass) {
+	    RETURN ( true );
+	}
+	thisClass = __ClassInstPtr(thisClass)->c_superclass;
     }
     RETURN ( false );
 %}
@@ -8851,16 +8900,16 @@
 isMemberOf:aClass
     "return true, if the receiver is an instance of aClass, false otherwise.
      Advice:
-        use of this to check objects for certain attributes/protocol should
-        be avoided; it limits the reusability of your classes by limiting use
-        to instances of a certain class.
-        Use check-methods to check an object for a certain attributes/protocol
-        (such as #isXXX, #respondsTo: or #isNumber);
-
-        Using #isMemberOf: is considered BAD STYLE.
+	use of this to check objects for certain attributes/protocol should
+	be avoided; it limits the reusability of your classes by limiting use
+	to instances of a certain class.
+	Use check-methods to check an object for a certain attributes/protocol
+	(such as #isXXX, #respondsTo: or #isNumber);
+
+	Using #isMemberOf: is considered BAD STYLE.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ (self class) == aClass
 !
@@ -8911,8 +8960,8 @@
      Because isNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return false.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ false
 !
@@ -8935,11 +8984,11 @@
     ^ false
 
     "
-        21 isNonByteCollection
-        'abc' isNonByteCollection
-        #'abc' isNonByteCollection
-        #[1 2 3] isNonByteCollection
-        #(1 2 3) isNonByteCollection
+	21 isNonByteCollection
+	'abc' isNonByteCollection
+	#'abc' isNonByteCollection
+	#[1 2 3] isNonByteCollection
+	#(1 2 3) isNonByteCollection
     "
 !
 
@@ -8971,7 +9020,7 @@
 
 isProgrammingLanguage
     "return true, if the receiver is a programming language.
-     False is returned here - the method is only redefined in 
+     False is returned here - the method is only redefined in
      ProgrammingLanguage."
 
     ^ false
@@ -9165,8 +9214,8 @@
      Because notNil is redefined in UndefinedObject,
      the receiver is definitely not nil here, so unconditionally return true.
      Notice:
-        This method is open coded (inlined) by the compiler(s)
-        - redefining it may not work as expected."
+	This method is open coded (inlined) by the compiler(s)
+	- redefining it may not work as expected."
 
     ^ true
 ! !
@@ -9195,7 +9244,7 @@
      It could also be put into some logfile or printed on the standard output/error."
 
     ActivityNotification isHandled ifTrue:[
-        ^ ActivityNotification raiseRequestWith:self errorString:aString
+	^ ActivityNotification raiseRequestWith:self errorString:aString
     ].
 
     "
@@ -9205,12 +9254,12 @@
 
     "
      ActivityNotification handle:[:ex |
-        ex errorString printCR.
-        ex proceed.
+	ex errorString printCR.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self activityNotification:'doing some long time computation'.
-        'world' printCR.
+	'hello' printCR.
+	self activityNotification:'doing some long time computation'.
+	'world' printCR.
      ]
     "
 
@@ -9242,7 +9291,7 @@
 
     answer := self confirmWithCancel:aString.
     answer isNil ifTrue:[
-        ^ cancelBlock value
+	^ cancelBlock value
     ].
     ^ answer
 
@@ -9278,10 +9327,10 @@
      by handling the UserConfirmation."
 
     ^ UserConfirmation new
-        defaultAnswer:defaultAnswerOrNil;
-        canCancel:true;
-        errorString:aString;
-        raiseRequest
+	defaultAnswer:defaultAnswerOrNil;
+	canCancel:true;
+	errorString:aString;
+	raiseRequest
 
     "
      nil confirmWithCancel:'hello' defaultAnswer:true
@@ -9294,9 +9343,9 @@
      and give user a chance to enter debugger."
 
     ^ self
-        errorNotify:aString
-        from:thisContext sender
-        allowDebug:true
+	errorNotify:aString
+	from:thisContext sender
+	allowDebug:true
 
     "
      nil errorNotify:'hello there'
@@ -9322,128 +9371,128 @@
     |currentScreen con sender action boxLabels boxValues default s|
 
     Smalltalk isInitialized ifFalse:[
-        'errorNotification: ' print. aString printCR.
-        aContext sender printAllLevels:10.
-        ^ nil
+	'errorNotification: ' print. aString printCR.
+	aContext sender printAllLevels:10.
+	^ nil
     ].
 
     (Dialog isNil
      or:[Screen isNil
      or:[(currentScreen := Screen current) isNil
      or:[currentScreen isOpen not]]]) ifTrue:[
-        "
-         on systems without GUI, simply show
-         the message on the Transcript and abort.
-        "
-        Transcript showCR:aString.
-        AbortOperationRequest raise.
-        "not reached"
-        ^ nil
+	"
+	 on systems without GUI, simply show
+	 the message on the Transcript and abort.
+	"
+	Transcript showCR:aString.
+	AbortOperationRequest raise.
+	"not reached"
+	^ nil
     ].
 
     Processor activeProcessIsSystemProcess ifTrue:[
-        action := #debug.
-        sender := aContext.
-        Debugger isNil ifTrue:[
-            '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
-            aString errorPrintCR.
-            Exception handle:[:ex |
-                'Cought recursive error while printing backtrace:' errorPrintCR.
-                ex description errorPrintCR.
-            ] do:[
-                thisContext fullPrintAll.
-            ].
-            action := #abort.
-        ].
+	action := #debug.
+	sender := aContext.
+	Debugger isNil ifTrue:[
+	    '****************** Cought Error while in SystemProcess ****************' errorPrintCR.
+	    aString errorPrintCR.
+	    Exception handle:[:ex |
+		'Cought recursive error while printing backtrace:' errorPrintCR.
+		ex description errorPrintCR.
+	    ] do:[
+		thisContext fullPrintAll.
+	    ].
+	    action := #abort.
+	].
     ] ifFalse:[
-        Dialog autoload.        "in case it's autoloaded"
-
-        Error handle:[:ex |
-            "/ a recursive error - quickly enter debugger
-            "/ this happened, when I corrupted the Dialog class ...
-            ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
-            action := #debug.
-            ex return.
-        ] do:[ |s|
-            sender := aContext.
-            sender isNil ifTrue:[
-                sender := thisContext sender.
-            ].
-            con := sender.
-
-            "/ skip intermediate (signal & exception) contexts
-            DebugView notNil ifTrue:[
-                con := DebugView interestingContextFrom:sender
-            ].
-
-            "/ show the first few contexts
-
-            s := WriteStream with:aString.
-            s cr; cr.
-            s nextPutLine:'Calling Chain:'.
-            s nextPutLine:'--------------------------------------------------------------'.
-            1 to:25 do:[:n |
-                con notNil ifTrue:[
-                    con printOn:s.
-                    s cr.
-                    con := con sender
-                ]
-            ].
-
-            boxLabels := #('Proceed').
-            boxValues := #(#proceed).
-            default := #proceed.
-
-            AbortOperationRequest isHandled ifTrue:[
-                default := #abort.
-                boxLabels := boxLabels , #('Abort').
-                boxValues := boxValues , #(#abort).
-                true "allowDebug" ifTrue:[
-                    boxLabels := boxLabels , #('Copy Trace and Abort').
-                    boxValues := boxValues , #(#copyAndAbort).
-                ]
-            ] ifFalse:[
-                true "allowDebug" ifTrue:[
-                    boxLabels := boxLabels , #('Copy Trace and Proceed').
-                    boxValues := boxValues , #(#copyAndProceed).
-                ].
-            ].
-
-            (allowDebug and:[Debugger notNil]) ifTrue:[
-                boxLabels := boxLabels , #('Debug').
-                boxValues := boxValues , #(#debug).
-                default := #debug.
-            ].
-
-            action := Dialog
-                    choose:s contents
-                    label:('Exception [' , Processor activeProcess nameOrId , ']')
-                    image:WarningBox errorIconBitmap
-                    labels:boxLabels
-                    values:boxValues
-                    default:default
-                    onCancel:nil.
-        ].
+	Dialog autoload.        "in case it's autoloaded"
+
+	Error handle:[:ex |
+	    "/ a recursive error - quickly enter debugger
+	    "/ this happened, when I corrupted the Dialog class ...
+	    ('Object [error]: ' , ex description , ' caught in errorNotification') errorPrintCR.
+	    action := #debug.
+	    ex return.
+	] do:[ |s|
+	    sender := aContext.
+	    sender isNil ifTrue:[
+		sender := thisContext sender.
+	    ].
+	    con := sender.
+
+	    "/ skip intermediate (signal & exception) contexts
+	    DebugView notNil ifTrue:[
+		con := DebugView interestingContextFrom:sender
+	    ].
+
+	    "/ show the first few contexts
+
+	    s := WriteStream with:aString.
+	    s cr; cr.
+	    s nextPutLine:'Calling Chain:'.
+	    s nextPutLine:'--------------------------------------------------------------'.
+	    1 to:25 do:[:n |
+		con notNil ifTrue:[
+		    con printOn:s.
+		    s cr.
+		    con := con sender
+		]
+	    ].
+
+	    boxLabels := #('Proceed').
+	    boxValues := #(#proceed).
+	    default := #proceed.
+
+	    AbortOperationRequest isHandled ifTrue:[
+		default := #abort.
+		boxLabels := boxLabels , #('Abort').
+		boxValues := boxValues , #(#abort).
+		true "allowDebug" ifTrue:[
+		    boxLabels := boxLabels , #('Copy Trace and Abort').
+		    boxValues := boxValues , #(#copyAndAbort).
+		]
+	    ] ifFalse:[
+		true "allowDebug" ifTrue:[
+		    boxLabels := boxLabels , #('Copy Trace and Proceed').
+		    boxValues := boxValues , #(#copyAndProceed).
+		].
+	    ].
+
+	    (allowDebug and:[Debugger notNil]) ifTrue:[
+		boxLabels := boxLabels , #('Debug').
+		boxValues := boxValues , #(#debug).
+		default := #debug.
+	    ].
+
+	    action := Dialog
+		    choose:s contents
+		    label:('Exception [' , Processor activeProcess nameOrId , ']')
+		    image:WarningBox errorIconBitmap
+		    labels:boxLabels
+		    values:boxValues
+		    default:default
+		    onCancel:nil.
+	].
     ].
 
     action == #debug ifTrue:[
-        ^ Debugger enter:sender withMessage:aString mayProceed:true
+	^ Debugger enter:sender withMessage:aString mayProceed:true
     ].
     action == #proceed ifTrue:[
-        ^ nil.
+	^ nil.
     ].
     (action == #copyAndProceed
     or:[action == #copyAndAbort]) ifTrue:[
-        s := '' writeStream.
-        Exception handle:[:ex |
-            'Cought recursive error while printing backtrace' errorPrintCR.
-        ] do:[
-            sender fullPrintAllOn:s.
-        ].
-        currentScreen rootView setClipboardText:s contents.
-        action == #copyAndProceed ifTrue:[
-            ^ nil
-        ].
+	s := '' writeStream.
+	Exception handle:[:ex |
+	    'Cought recursive error while printing backtrace' errorPrintCR.
+	] do:[
+	    sender fullPrintAllOn:s.
+	].
+	currentScreen rootView setClipboardText:s contents.
+	action == #copyAndProceed ifTrue:[
+	    ^ nil
+	].
     ].
 
     AbortOperationRequest raise.
@@ -9476,12 +9525,12 @@
 
     "
      InformationSignal handle:[:ex |
-        'no box popped' printCR.
-        ex proceed.
+	'no box popped' printCR.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self information:'some info'.
-        'world' printCR.
+	'hello' printCR.
+	self information:'some info'.
+	'world' printCR.
      ]
     "
 
@@ -9496,9 +9545,9 @@
 
 
     Smalltalk isInitialized ifFalse:[
-        "/ thisContext fullPrintAll.
-        'information: ' print. aString printCR.
-        ^ self
+	"/ thisContext fullPrintAll.
+	'information: ' print. aString printCR.
+	^ self
     ].
     UserNotification raiseRequestWith:self errorString:aString.
 
@@ -9526,12 +9575,12 @@
 
     "
      Warning handle:[:ex |
-        Transcript showCR:ex description.
-        ex proceed.
+	Transcript showCR:ex description.
+	ex proceed.
      ] do:[
-        'hello' printCR.
-        self warn:'some info'.
-        'world' printCR.
+	'hello' printCR.
+	self warn:'some info'.
+	'world' printCR.
      ]
     "
 
@@ -9556,15 +9605,16 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.706 2013-01-16 14:08:50 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.706 2013-01-16 14:08:50 stefan Exp $'
 !
 
 version_SVN
-    ^ '$ Id: Object.st 10643 2011-06-08 21:53:07Z vranyj1  $'
+    ^ '§ Id: Object.st 10643 2011-06-08 21:53:07Z vranyj1  §'
 ! !
 
+
 Object initialize!