public ObjClass(ObjClass superclass, int numFields, ObjString name)
{
Methods = new Method[InitialMethodSize];
Superclass = superclass;
NumFields = numFields;
Name = name;
// Create the metaclass.
ObjString metaclassName = new ObjString(name + " metaclass");
ObjClass metaclass = new ObjClass(0, metaclassName) { ClassObj = ClassClass };
// Metaclasses always inherit Class and do not parallel the non-metaclass
// hierarchy.
metaclass.BindSuperclass(ClassClass);
ClassObj = metaclass;
BindSuperclass(superclass);
}