try {
//ceylon.language.meta.declaration.TypeParameter elementTypeParameter = ((GenericDeclaration)Metamodel.getOrCreateMetamodel(Array.class)).getTypeParameterDeclaration("Element");
//TypeDescriptor reifiedElement = Metamodel.getTypeDescriptor(dted.getTypeArgument(elementTypeParameter));
//Util.setter(MethodHandles.lookup(), "$reifiedElement").invokeExact(this, reifiedElement);
ValueDeclaration sizeAttribute = (ValueDeclaration)((ClassDeclaration)Metamodel.getOrCreateMetamodel(Array.class)).getMemberDeclaration(ceylon.language.meta.declaration.ValueDeclaration.$TypeDescriptor$, "size");
Integer size = (Integer)dted.getValue(Integer.$TypeDescriptor$, sizeAttribute);
Util.setter(MethodHandles.lookup(), "size").invokeExact(this, Util.toInt(size.value));
Util.setter(MethodHandles.lookup(), "array").invokeExact(this, createArrayWithElement(this.$reifiedElement, Util.toInt(size.value), (Element)null));
for (int ii = 0; ii < size.value; ii++) {