public void lockScopes() {
   getScopeForMemberLookupAsWritableScope().changeLockLevel(WritableScope.LockLevel.READING);
   if (classObjectDescriptor != null) {
     classObjectDescriptor.lockScopes();
   }
   scopeForSupertypeResolution.changeLockLevel(WritableScope.LockLevel.READING);
   scopeForMemberResolution.changeLockLevel(WritableScope.LockLevel.READING);
   getWritableScopeForInitializers().changeLockLevel(WritableScope.LockLevel.READING);
 }
 public void setTypeParameterDescriptors(@NotNull List<TypeParameterDescriptor> typeParameters) {
   if (this.typeParameters != null) {
     throw new IllegalStateException("Type parameters are already set for " + getName());
   }
   this.typeParameters = new ArrayList<TypeParameterDescriptor>(typeParameters);
   for (TypeParameterDescriptor typeParameterDescriptor : typeParameters) {
     scopeForSupertypeResolution.addTypeParameterDescriptor(typeParameterDescriptor);
   }
   scopeForSupertypeResolution.changeLockLevel(WritableScope.LockLevel.READING);
 }