@Override
  public PsiType getType() {
    PsiType arrayType = getArrayExpression().getType();
    if (!(arrayType instanceof PsiArrayType)) return null;
    final PsiType componentType = ((PsiArrayType)arrayType).getComponentType();
    if (PsiUtil.isAccessedForWriting(this)) return componentType;
    return PsiUtil.captureToplevelWildcards(componentType, this);
  }
@Override
  public PsiType getType()